2011-08-28 38 views
8

Bazı kodları çevrimiçi buldum, biraz düzenledim. Bir JInternalFrame'in başlık çubuğunu gizlemek istiyorum.gizleme başlık çubuğu -java

JInternalFrame frame = new JInternalFrame(); 
    // Get the title bar and set it to null 
    setRootPaneCheckingEnabled(false); 
    javax.swing.plaf.InternalFrameUI ifu= frame.getUI(); 
    ((javax.swing.plaf.basic.BasicInternalFrameUI)ifu).setNorthPane(null);  

    frame.setLocation(i*50+10, i*50+10); 
    frame.setSize(200, 150); 
    //frame.setBackground(Color.white);  

    frame.setVisible(true); 
    desktop.add(frame); 

Sorun, başlık çubuğunun bir nedenle gizlenmemesidir. Teşekkürler.

cevap

11

Önce iç çerçeveyi basicinternalframe'e dönüştürün.

böyle yapmak: - Bu senin başlık çubuğunda sonra
BasicInternalFrameUI bi = (BasicInternalFrameUI)your_internalframe_object.getUI(); 
bi.setNorthPane(null); 

görünmez olacaktır.

10

Bu sorunu şu şekilde çözdüm: JInternalFrame'u alt sınıflara ayırın ve aşağıdaki kodu yapıcısına ekleyin. Bu çok iyi çalışıyor benim için

+0

Güzel, bu doğru .setUI (null) değil, doğru cevap! Ayrıca bazı olaylardan sonra bunu tekrar yapmanız gerekebilir (pencereyi küçültme gibi) –

+0

Doğru cevap budur. [Frame.setBorder (null); ile bir [JInternalFrame'] kullanmak için (https://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html) birleştirildiğinde de yararlıdır.) bir üst düzey ['JFrame'] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html) gibi bir [/ JPanel] gibi bir solo bileşen olarak '] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html). – vallismortis

+0

Benim için çalıştı. Denemeyecektim ama çekicilik gibi çalışıyor. Teşekkür ederim. – George

0

düşünüyorum sizin durumda

((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null); 

(I NetBeans' GUI Builder kullanmak çünkü ücretsiz subclassing olsun):

putClientProperty("JInternalFrame.isPalette", Boolean.TRUE); 
    getRootPane().setWindowDecorationStyle(JRootPane.NONE); 
    ((BasicInternalFrameUI) this.getUI()).setNorthPane(null); 
    this.setBorder(null); 

sayesinde.

İlgili konular