Swing JInternalFrame: Mehrere Probleme

Status
Nicht offen für weitere Antworten.

Souljumper

Aktives Mitglied
hi,

ich hab ein paar Probleme mit der Verwendung von JInternalFrames. Hab ein JFrame das als haupt panel eine JDesktopPane verwendet.

Dieser JDesktopPane füge ich alle Elemente hinzu u.a. auch das JInternalFrame. Das soll jedesmal dann geöffent werden wenn ein Button geklickt wird.

Nun hab ich das Problem, das bei jdem öffnen des InternalFrame dieser immer minimiert hochkommt, obwohl die die größe mit setSize/setPrefferedSize gesetzt hab.
Die JDesktopPane selber hat selber auch Elemetnte (Buttons, label, textfields) die mit einem GridBagLayout angehordnet sind. Wenn ich den internalFrame öffne zerschießt sich das layout der desktoppane, whrend das internalframe sichtbar ist. sobald es wieder geschloßen ist, siht das layout der desktoppane wieder normal aus.

jemand eine idee woran das liegen kann?
 

Marco13

Top Contributor
Ein JDesktopPane sollte eigentlich kein (eigenes, spezielles) Layout und keine Componenten haben - pack' die Lieber in ein JPanel, das passend platziert wird. Wenn diese Components trotzdem unbedingt irgendwie auf dem JDesktopPane untergebracht werden sollen ... muss man mal schauen, ob man da irgendwas dengeln kann... :rolleyes:
 

Ebenius

Top Contributor
Ich kann mich meinem Vorredner nur anschließen. Das GridBagLayout möchte nunmal alle Komponenten einschließlich JInternalFrame auslegen.

Du könntest ein JLayeredPane benutzen. In den Hintergrund legst Du ein JPanel mit GridBagLayout. Diesem spendierst Du alle besonderen Komponenten. In den Vordergrund des JLayeredPane legst Du das JDesktopPane (durchsichtig). Dieses bekommt keinen LayoutManager zugewiesen und trägt das JInternalFrame.

Nicht, dass ich das eben ausprobiert hätte, aber so sollte es gehen.

Ebenius
 

Ebenius

Top Contributor
Nicht, dass ich das eben ausprobiert hätte, aber so sollte es gehen.
Jetzt hab ich's probiert. So funktioniert's beispielsweise:
Java:
/* build back panel */
final JLabel backLabel = new JLabel("Ebenius");
backLabel.setIcon(new ImageIcon(new URL(
      "http://www.java-forum.org/avatars/ebenius.gif")));
backLabel.setAlignmentX(1.0f);
backLabel.setHorizontalTextPosition(SwingConstants.CENTER);
backLabel.setVerticalTextPosition(SwingConstants.BOTTOM);

final JPanel backPanel = new JPanel(new BorderLayout());
backPanel.setBackground(Color.WHITE);
backPanel.setLayout(new BoxLayout(backPanel, BoxLayout.Y_AXIS));
backPanel.add(Box.createGlue());
backPanel.add(backLabel);

/* build desktop pane */
final JDesktopPane desktopPane = new JDesktopPane();
desktopPane.setOpaque(false);

/* combine desktop pane and back panel */
final JLayeredPane layeredPane = new JLayeredPane();
layeredPane.setLayout(new OverlayLayout(layeredPane));
layeredPane.add(backPanel, JLayeredPane.FRAME_CONTENT_LAYER);
layeredPane.add(desktopPane, JLayeredPane.DEFAULT_LAYER);
layeredPane.setOpaque(true);
layeredPane.setBackground(Color.BLACK);
layeredPane.setPreferredSize(new Dimension(400, 400));

/* build internal frame actions */
final Action clearFramesAction = new AbstractAction("Remove All Frames") {

  public void actionPerformed(ActionEvent e) {
    desktopPane.removeAll();
    desktopPane.revalidate();
    desktopPane.repaint();
  }
};

final Action addFrameAction = new AbstractAction("Add Frame") {

  int frameNumber = 0;

  public void actionPerformed(ActionEvent e) {
    final JInternalFrame internalFrame = new JInternalFrame("Internal");
    internalFrame.setContentPane(new JLabel("Test Frame: "
          + (frameNumber + 1)));
    internalFrame.pack();
    internalFrame.setLocation(frameNumber * 20, frameNumber * 20);
    frameNumber++;
    desktopPane.add(internalFrame);
    internalFrame.setVisible(true);
  }
};

/* build button panel */
final JButton addButton = new JButton(addFrameAction);
addButton.setAlignmentX(0.5f);
final JButton removeButton = new JButton(clearFramesAction);
removeButton.setAlignmentX(0.5f);

final JPanel buttonPanel = new JPanel(null);
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS));
buttonPanel.add(Box.createVerticalGlue());
buttonPanel.add(addButton);
buttonPanel.add(Box.createVerticalStrut(6));
buttonPanel.add(removeButton);
buttonPanel.add(Box.createVerticalGlue());

/* build content pane */
final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
contentPane.add(layeredPane, BorderLayout.CENTER);
contentPane.add(buttonPanel, BorderLayout.LINE_END);

/* show test frame */
final JFrame f = new JFrame("Test Frame: LayeredDesktopPaneTestGUI");
f.setContentPane(contentPane);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Mehrere JInternalFrame; GetValues AWT, Swing, JavaFX & SWT 1
D JInternalFrame wechselt Position beim ersten Click AWT, Swing, JavaFX & SWT 0
L LookAndFeel JInternalFrame aussehen isSelected() true vs false AWT, Swing, JavaFX & SWT 0
X JInternalFrame vor Java2D-Zeichnung langsam bzw. Gui friert ein AWT, Swing, JavaFX & SWT 1
G Swing JInternalFrame AWT, Swing, JavaFX & SWT 0
R Custome TitlePane JInternalFrame - ControlButton AWT, Swing, JavaFX & SWT 2
B JInternalFrame Focus setzten geht nicht AWT, Swing, JavaFX & SWT 2
J Swing JInternalFrame modal setzen? AWT, Swing, JavaFX & SWT 13
J Swing JInternalFrame schließen ändern? AWT, Swing, JavaFX & SWT 7
J Swing Fokus JInternalFrame fehlerhaft AWT, Swing, JavaFX & SWT 4
G JInternalframe geöffnet oder nicht? AWT, Swing, JavaFX & SWT 4
G Swing und MDI mit JInternalFrame AWT, Swing, JavaFX & SWT 11
H Swing JInternalFrame, JDesktopPane und ein BorderLayout AWT, Swing, JavaFX & SWT 2
R Problem beim Anzeigen von Bildern auf JInternalFrame AWT, Swing, JavaFX & SWT 6
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
A Swing getInsets() JInternalFrame AWT, Swing, JavaFX & SWT 2
R Swing JInternalFrame Opaque AWT, Swing, JavaFX & SWT 6
M JInternalFrame - Handhabung? AWT, Swing, JavaFX & SWT 5
algorismi JInternalframe Icon AWT, Swing, JavaFX & SWT 14
S JInternalFrame oder JTextArea neu laden AWT, Swing, JavaFX & SWT 2
V JInternalFrame wird überzeichnet AWT, Swing, JavaFX & SWT 8
T Neuen JInternalFrame von JLabel "herunterziehen" AWT, Swing, JavaFX & SWT 6
T JInternalframe auf DropTarget droppen? AWT, Swing, JavaFX & SWT 7
O Swing JInternalFrame komplett neu laden AWT, Swing, JavaFX & SWT 3
B JInternalFrame - Maximieren AWT, Swing, JavaFX & SWT 11
X Grafikfehler mit JInternalFrame (Überlagerungen) AWT, Swing, JavaFX & SWT 2
B Swing Image als Hintergrund im JInternalFrame - Problem AWT, Swing, JavaFX & SWT 3
J Swing JInternalFrame - mit DesktopManager maximieren AWT, Swing, JavaFX & SWT 3
J Swing JInternalFrame - Bug: getDesktopManager.deiconify(...) AWT, Swing, JavaFX & SWT 2
W JInternalFrame + JList Problem AWT, Swing, JavaFX & SWT 5
H Swing JInternalFrame aus JFrame ziehen AWT, Swing, JavaFX & SWT 6
N JInternalFrame minimieren und schließen AWT, Swing, JavaFX & SWT 2
T JFrame als JInternalFrame darstellen AWT, Swing, JavaFX & SWT 2
K Swing JInternalFrame und LayoutManager AWT, Swing, JavaFX & SWT 6
C Zeichnen über JInternalFrame der ICEpdf-Dokument anzeigt AWT, Swing, JavaFX & SWT 3
T Aussehen von JFrame bzw JInternalFrame ändern... wie? AWT, Swing, JavaFX & SWT 23
J Swing JInternalFrame AWT, Swing, JavaFX & SWT 5
S Swing JInternalFrame: Titelleiste entfernen AWT, Swing, JavaFX & SWT 5
R Swing JFrame oder JInternalFrame? AWT, Swing, JavaFX & SWT 13
B JInternalFrame resize event AWT, Swing, JavaFX & SWT 2
X JInternalFrame AWT, Swing, JavaFX & SWT 3
G JInternalFrame AWT, Swing, JavaFX & SWT 2
W JInternalFrame alleine funktionsfähig AWT, Swing, JavaFX & SWT 5
A JSplitPane in JInternalFrame AWT, Swing, JavaFX & SWT 2
G JInternalFrame und beinhaltende Komponenten 'abschalten' AWT, Swing, JavaFX & SWT 2
K Tab von JPanel nach JInternalFrame AWT, Swing, JavaFX & SWT 2
M JInternalFrame Titel sichtbar setzen AWT, Swing, JavaFX & SWT 2
K JInternalFrame - schwarzer Bildschirm AWT, Swing, JavaFX & SWT 2
M JInternalFrame ohne Titelbalken AWT, Swing, JavaFX & SWT 5
A erneutes Öffnen jInternalFrame: illegal component position AWT, Swing, JavaFX & SWT 4
S Kontextmenu im JInternalFrame unterdrücken AWT, Swing, JavaFX & SWT 5
G Layerproblem JInternalFrame AWT, Swing, JavaFX & SWT 2
X Externe Anwendungen in JInternalframe starten. AWT, Swing, JavaFX & SWT 5
T JInternalFrame Vollbild Problem AWT, Swing, JavaFX & SWT 4
X Relative positionierung in einem JInternalFrame AWT, Swing, JavaFX & SWT 3
J JInternalFrame "schimmert" durch AWT, Swing, JavaFX & SWT 4
D JInternalFrame iconified Position nach parent-resize AWT, Swing, JavaFX & SWT 2
DeeDee0815 JInternalFrame in JScrollpane AWT, Swing, JavaFX & SWT 4
C Hilfe bei JInternalFrame AWT, Swing, JavaFX & SWT 6
J JInternalFrame überlagert/unterlagert anderen Elementen AWT, Swing, JavaFX & SWT 2
DeeDee0815 setContentPane()-Problem bei JInternalFrame AWT, Swing, JavaFX & SWT 2
W Unterdrückung von FrameIcon-Funktion im JInternalFrame AWT, Swing, JavaFX & SWT 5
F JInternalFrame Look and Feel AWT, Swing, JavaFX & SWT 3
W Realisierung Gradient in der Titlebar JInternalFrame AWT, Swing, JavaFX & SWT 7
T JInternalFrame Konflikt mit LayoutManager AWT, Swing, JavaFX & SWT 5
T JInternalFrame und Iconified AWT, Swing, JavaFX & SWT 10
C Tooltip nur anzeigen, wenn JInternalFrame minimiert AWT, Swing, JavaFX & SWT 3
M JInternalFrame mouseEntered/mouseExited AWT, Swing, JavaFX & SWT 8
S Eine Art JInternalFrame in JSplitPane AWT, Swing, JavaFX & SWT 3
G Problem bei JTable in JInternalFrame AWT, Swing, JavaFX & SWT 4
megachucky JInternalFrame modal setzen AWT, Swing, JavaFX & SWT 3
megachucky JInternalFrame Größe und Location nicht einstellbar AWT, Swing, JavaFX & SWT 8
T JPanel mit paintComponent methode im JInternalFrame AWT, Swing, JavaFX & SWT 3
R Rückgabewert TreeSelectionListener für JInternalFrame AWT, Swing, JavaFX & SWT 4
J Applet in JInternalFrame laden AWT, Swing, JavaFX & SWT 9
B JInternalFrame in den Vordergrund rücken + Focus AWT, Swing, JavaFX & SWT 15
F Anzeigen eines JInternalFrame auf einen JFrame AWT, Swing, JavaFX & SWT 3
B JInternal Frame laden von anderem JInternalFrame AWT, Swing, JavaFX & SWT 3
A JInternalFrame setMaximizeable(false) wehrt sich AWT, Swing, JavaFX & SWT 2
S JInternalFrame AWT, Swing, JavaFX & SWT 8
welterde Menü in der Titelleiste des JInternalFrame AWT, Swing, JavaFX & SWT 4
S Problem, neuen JInternalFrame zur Laufzeit anzuzeigen AWT, Swing, JavaFX & SWT 8
M Cursor im deaktivierten JInternalFrame AWT, Swing, JavaFX & SWT 2
V JInternalFrame in einen Panel? AWT, Swing, JavaFX & SWT 2
C Scrollbalken bei einem JInternalFrame AWT, Swing, JavaFX & SWT 6
G JInternalFrame mit Doppelklick schließen möglich? AWT, Swing, JavaFX & SWT 2
D JInternalFrame unverschiebbar AWT, Swing, JavaFX & SWT 7
G JInternalFrame Fenster Status von Icon nach Normal? AWT, Swing, JavaFX & SWT 5
G lightweight >> heavyweight bei JInternalFrame für JMen AWT, Swing, JavaFX & SWT 13
P JInternalFrame: Verhindern das man es verschieben kann AWT, Swing, JavaFX & SWT 2
K JInternalFrame: internes Fenster zentrieren AWT, Swing, JavaFX & SWT 2
D JInternalFrame beim Öffnen nicht aktiv! AWT, Swing, JavaFX & SWT 5
A Probleme mit JInternalFrame AWT, Swing, JavaFX & SWT 5
javasdann Höhe von Titlebar in jInternalFrame ändern AWT, Swing, JavaFX & SWT 5
S Auf Komponenten eines JInternalFrame zugreifen AWT, Swing, JavaFX & SWT 2
A Ich kann kein JInternalFrame anzeigen ! AWT, Swing, JavaFX & SWT 7
P JInternalFrame - Problem AWT, Swing, JavaFX & SWT 3
F Listener für JPanel im JInternalFrame AWT, Swing, JavaFX & SWT 5
S finalizie() bei JInternalFrame wird nicht aufgerufen ! AWT, Swing, JavaFX & SWT 11
A JInternalFrame AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben