JInternalFrame ohne Titelleiste

Sorry wegen des Dreifachen Posts, ich weiss, dass das kein guter Stil ist… aber ich kann mein Beitrage ja nicht bearbeiten.

Zu meiner Frage, kann ich den Code (danke _Michael) auch als allgemein gueltige Vorlage fuer alle JInternatFrames setzen, denn es ist imo ein wenig redundant das fuer jedes einzelne zu machen?

Es handelt sich hierbei um javax.swing.plaf.basic.BasicInternalFrameUI also eine Standard Klasse.

Auf dem JLayerPane muss man sich um Position und Größe selbst kümmern. siehe z.B. setBounds(…)

Für etwas allgemein gültiges muss man meines Wissens über das LaF.
Man kann sich ja eine Factory Methode bauen die solche IFrames erstellt. Aber wenn Du die Funktionen der Titelleiste nicht benötigst, benötigst Du dann wenigestens die Größenänderung über den Rahmen? Wenn nicht ist der IFrame eigentlich die falsche Komponente und es würde ein einfaches JPanel ausreichen.

Mit einem JPanel habe ich das ganze nicht hinbekommen.

Diese einzeiligen Aussagen, “das hat nicht geklappt” sind völlig nichtssagend. Weder Fehlermeldung, Beschreibung wo es gehapert hat noch die Intention ob man es eigentlich gerne wie vorgeschlagen hätte oder mit der aktuellen Lösung zufrieden ist wird deutlich. Sollen sich die Helfer da was überlegen?

Ein recht simples Bsp. gibt’s hier:
http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
Ist zwar mit JLabels funktioniert aber mit allen anderen Komponenten genauso.

Ich habe das ganze jetzt noch einmal auf JPanels umgestellt. Bei den meisten Fenstern geht das auch ganz gut, doch ich habe eine JTextArea in der sich eine JScrollPane befindet und bei diesem JPanel haelt es sich nicht an die vorgegbene Groesse, sondern macht ein kaum sichtbares JPanel auf, in das nicht einmal ein Buchstabe passt.

Die JTextArea gehört in die JScrollPane, nicht umgekehrt. was hat es mit dem JPanel auf sich? (Grundsätzlich könnte man die JScrollPane auch direkt verbauen) Welchen LayoutManager benutzt es? An welcher Komponente wird Größe und Position gesetzt?
Ohne den Code zu kennen, kann ich ich mich eigentlich nur wiederholen: Das funktioniert mit allen Komponenten (JComponent) gleich.


...
 private JTextArea area = new JTextArea();        
 private JScrollPane ausgabe = new JScrollPane(area);
 private Color hintergrundfarbe = new Color(38, 72, 99);

...

JPanel anzeige = new JPanel();
    anzeige.setBackground(Color.BLACK);
                
               anzeige.add(textAusgabe);
                                             
                     textAusgabe.setVisible(false);
                     textAusgabe.setBorder(null);
                     textAusgabe.setBackground(Color.black);
                     textAusgabe.setPreferredSize(new Dimension(500, 350));
                     textAusgabe.add(ausgabe);
                            area.setForeground(Color.white);
                            area.setBackground(hintergrundfarbe);
                            area.setEditable(false);


Was ist textAusgabe, welchen LayoutManager benutzt es und warum textAusgabe.setVisible(false);?
area ist eine leere JTextArea dadurch ist auch das umgebende JScrollPane nicht sonderlich groß. Daher ist die Größe und Darstellung vom oben erfragten LayoutManager abhängig.

Oh, verzeih das JPanel habe ich vergessen mitzukopieren:

private JPanel textAusgabe = new JPanel();

Ein Layout habe ich nicht eingestellt, weil ich dachte, da lediglich ein Scrollbares Textfeld hinein kommt ist das nicht notwendig.

Verrückt. Ich musste nur ein Layout einstellen und schon gings. Danke fuer den Anstoss.

Das hat aber nichts mehr mit dem ursprünglichen Thema zu tun?

JPanel verwendet per Standard FlowLayout, welches die Komponenten in Ihrere PreferredSize darstellt. Diese dürfte bei einer JScrollPane mit leerem JTextArea bei gut 20 Pixel hoch und wenigen Pixeln breit liegen.