Fenster ohne Buttons ín der Titelleiste
-
Wie bekomme ich z.B. das X in einem Dialogfenster in der Titelleiste weg?
-
das X kriegste mit normalen Mitteln soweit ich weiß gar nicht weg (ich geh davon aus, daß du Swing verwendest).. ein Workaround wäre ein JWindow zu verwenden und die Titelleiste selber zu malen..
-
das wäre natürlich eine möglichkeit. aber dann kann man das fenster nicht über diese selbstgemalte titelleiste verschieben.
-
Ausgehend von JDialog könntest du setUndecorated(true) aufrufen ... dann dürften gar keine Buttons mehr sichtbar sein.
Edit: Ich muss mich korrigieren. Mit setUndecorated(true) verschwindet der Rahmen um den Dialog komplett ... also das ist keine adäquate Lösung
-
Bei einem JInternalFrame kannst du mit setClosable(false) das X ausschalten.
-
Du kannst immerhin dafür dorgen, dass ein click auf X nichts bewirkt mit
JFrame.setDefaultCloseOperation(avax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
und ausserdem musst du das System.exit(0) aus folgendem Code entfernen:addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { System.exit(0); }
Oder aber du benutzt ein Würgaround wie das hier:
import java.awt.*; import javax.swing.*; public class FrameTest extends JFrame { public FrameTest() { initComponents(); setSize(400,400); } private void initComponents() { jInternalFrame1 = new javax.swing.JInternalFrame(); jPanel2 = new javax.swing.JPanel(); getContentPane().setLayout(null); setUndecorated(true); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jInternalFrame1.setTitle("FrameTest"); jInternalFrame1.setVisible(true); jInternalFrame1.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentMoved(java.awt.event.ComponentEvent evt) { jInternalFrame1ComponentMoved(evt); } }); jInternalFrame1.getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER); getContentPane().add(jInternalFrame1); jInternalFrame1.setBounds(0, 0, 400, 400); pack(); } private void jInternalFrame1ComponentMoved(java.awt.event.ComponentEvent evt) { setLocationRelativeTo(jInternalFrame1); } private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } public static void main(String args[]) { new FrameTest().show(); } private javax.swing.JInternalFrame jInternalFrame1; private javax.swing.JPanel jPanel2; }