JDialog: Titelleiste entfernen, Rahmen beibehalten
Ist es möglich, die Titelleiste aus einem JDialog zu entfernen, aber den Rand beizubehalten?
Die Basis-SSCCE sieht folgendermaßen aus:
package test;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.SwingUtilities;
public class SSCCE extends JFrame {
private JDialog dialog;
public SSCCE() {
dialog = new JDialog();
dialog.setSize(100, 100);
dialog.add(new JList<>(new String[] { "One", "Two", "Three" }));
dialog.setUndecorated(true);
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void showDialog() {
dialog.setLocationRelativeTo(this);
dialog.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SSCCE ex = new SSCCE();
ex.setVisible(true);
ex.showDialog();
}
});
}
}
Running it Ich sehe das:
Aber ich möchte nicht, dass die Titelleiste im JDialog angezeigt wird. Die Standardantwort lautetsetUndecorated(true)
. Aber dann verliere ich auch die Fensterränder und das will ich nicht. Sieht aus wie das
Was ich will, ist so etwas wie dieses Modell:
Wie erreiche ich das?
BEARBEITEN
Ich habe versucht, mich an eine der LaF-Grenzen zu halten, aber ich erhalte merkwürdige Ergebnisse. Nur zum Testen habe ich mich für "RootPane.errorDialogBorder" entschieden und erwartet, dass mein Dialogfeld von einem fetten roten Rahmen umgeben wird. Aber stattdessen habe ich Folgendes:
Das sieht für mich wie die unscharfe Version des Rahmens "RootPane.frameBorder" aus. Warum habe ich das stattdessen bekommen?