Servus,
irgendwie krieg ich es nicht hin den JInternalFrame so zu setzen wie ich will. Da muss es noch eine Verständnislücke geben, was das Zusammenspiel aus Container, ContentPane, JInternalFrame und den Layoutmanager des JFrames zu geben.
Einmal hier schon etwas Code wie ich es in einer Methode umzusetzen zu versucht habe, ich habe eine Gui aus einem JFrame, welcher einen Layoutmanager und viele JPanels fasst, jetzt soll beim Aufruf eines bestimmten Menueeintrags ein JInternalFrame erscheinen und zwar 'schwebend' vor allen.
Aktuell erscheint der JInternalFrame hinter einem JPanel und wenn ich es in den Fokus nehme ist es da. Allerdings ist es gefangen in dem JPanel und wenn ich den JInternalFrame bewege dann rutscht er mir auch hinter die anderen Panels.
Ich komme da nicht weiter, habe schon viel gelesen und probiert. Mal schauen ob ich alles richtig habe: um einen JInternalFrame zu erzeugen muss ich diesen an eine ContentPane andocken, das mach ich dass ich den Hauptframe hole und getContentPane() aufrufe und das Ergebnis in einem Containerobjekt abspeicher. Vorher erzeuge ich ein JDesktop-Objekt, dieses adde ich dann zu dem Container aus dem getContentPane()-Aufruf. Dann erzeuge ich die JInternalFrame-Objekte und hänge diese an das desktop-Objekt, dabei achte ich darauf dass immer Größe des JInternalFrames und die Sichtbarkeit gesetzt sind.
Nach dem Lesen meiner Unterlagen frage ich mich, ob mein Wunsch eine Gui aus JPanels auf einem JFrame und JInternalFrames auf dem gleichen JFrame überhaupt sauber ist, oder ob man da lieber entweder oder macht, also nur JInternalFrames nutzt (diese MID-Applikation) oder einen JFrame mit diversen JPanels.
Eine weitere Ursache für das für mich unerklärliche Verhalten des JInternalFrames sehe ich im Layoutmanager der Gui - da habe ich das BorderLayout und der Quelltext-Ausschnitt bezieht sich auf den CENTER-Bereich, da ist dann der JInternalFrame auch gefangen, aber eigentlich will ich den ja ganz oben haben.
Dann gibt es noch etwas was ich nicht verstehe: ich sage dem JInternalFrame, dass er resizeable sein soll und wenn ich den JInternalFrame an JPanel hänge, also nicht an ein JDesktopPane, dann seh ich diesen zwar, aber wenn ich mittels Mausklick die Größe ändere, dann springt mir die Größe nach loslassen der Maus wieder zurück.
Danke für den ein oder anderen Hinweis, ich bin da mit meinem Latein echt am Ende.
irgendwie krieg ich es nicht hin den JInternalFrame so zu setzen wie ich will. Da muss es noch eine Verständnislücke geben, was das Zusammenspiel aus Container, ContentPane, JInternalFrame und den Layoutmanager des JFrames zu geben.
Einmal hier schon etwas Code wie ich es in einer Methode umzusetzen zu versucht habe, ich habe eine Gui aus einem JFrame, welcher einen Layoutmanager und viele JPanels fasst, jetzt soll beim Aufruf eines bestimmten Menueeintrags ein JInternalFrame erscheinen und zwar 'schwebend' vor allen.
Aktuell erscheint der JInternalFrame hinter einem JPanel und wenn ich es in den Fokus nehme ist es da. Allerdings ist es gefangen in dem JPanel und wenn ich den JInternalFrame bewege dann rutscht er mir auch hinter die anderen Panels.
Ich komme da nicht weiter, habe schon viel gelesen und probiert. Mal schauen ob ich alles richtig habe: um einen JInternalFrame zu erzeugen muss ich diesen an eine ContentPane andocken, das mach ich dass ich den Hauptframe hole und getContentPane() aufrufe und das Ergebnis in einem Containerobjekt abspeicher. Vorher erzeuge ich ein JDesktop-Objekt, dieses adde ich dann zu dem Container aus dem getContentPane()-Aufruf. Dann erzeuge ich die JInternalFrame-Objekte und hänge diese an das desktop-Objekt, dabei achte ich darauf dass immer Größe des JInternalFrames und die Sichtbarkeit gesetzt sind.
Nach dem Lesen meiner Unterlagen frage ich mich, ob mein Wunsch eine Gui aus JPanels auf einem JFrame und JInternalFrames auf dem gleichen JFrame überhaupt sauber ist, oder ob man da lieber entweder oder macht, also nur JInternalFrames nutzt (diese MID-Applikation) oder einen JFrame mit diversen JPanels.
Eine weitere Ursache für das für mich unerklärliche Verhalten des JInternalFrames sehe ich im Layoutmanager der Gui - da habe ich das BorderLayout und der Quelltext-Ausschnitt bezieht sich auf den CENTER-Bereich, da ist dann der JInternalFrame auch gefangen, aber eigentlich will ich den ja ganz oben haben.
Dann gibt es noch etwas was ich nicht verstehe: ich sage dem JInternalFrame, dass er resizeable sein soll und wenn ich den JInternalFrame an JPanel hänge, also nicht an ein JDesktopPane, dann seh ich diesen zwar, aber wenn ich mittels Mausklick die Größe ändere, dann springt mir die Größe nach loslassen der Maus wieder zurück.
Danke für den ein oder anderen Hinweis, ich bin da mit meinem Latein echt am Ende.
Java:
String debugString = new String();
debugString = jobaConvexHullObject.getDebugString();
Container container = frame.getContentPane();
JDesktopPane desktop = new JDesktopPane();
container.add( desktop );
JInternalFrame debugFrame = new JInternalFrame(
"Debug-InternalFrame-Convex-Hull", // title
true, // resizeable
true, // closeable
true, // maximizeable
true // iconifiable, minimierbar
);
debugFrame.setSize(600, 200);
Font debugFrameFont = new Font("Nimbus Mono L", Font.PLAIN, 12 );
JTextArea debugFrameTextArea = new JTextArea();
JScrollPane debugFrameScrollPane = new JScrollPane( debugFrameTextArea ); // ScrollPane die TextArea geben
debugFrameTextArea.setFont(debugFrameFont);
debugFrameTextArea.setEditable(false);
debugFrameTextArea.setText(debugString + debuggingStringFromJobaGuiToJobaConvexHull + debuggingStringFromJobaConvexHullToJobaGui);
debugFrame.add(debugFrameScrollPane); // ScrollPane einhängen bei JIF
debugFrame.setVisible(true);
desktop.add( debugFrame );
this.centerPanel.add( convexHullPanel );
this.centerPanel.revalidate();
this.centerPanel.repaint();