2011-08-28 16 views
8

मुझे कुछ कोड ऑनलाइन मिला, मैंने इसे थोड़ा संपादित किया। मैं एक JInternalFrame के शीर्षक पट्टी को छिपाना चाहता हूं।JInternalFrame का शीर्षक पट्टी छुपाएं? -जावा

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); 

समस्या यह है कि किसी भी कारण से टाइटल बार छुपाया नहीं जा रहा है। धन्यवाद।

उत्तर

11

पहले internalframe को basicinternalframe में परिवर्तित करें।

इस तरह यह करना: -

BasicInternalFrameUI bi = (BasicInternalFrameUI)your_internalframe_object.getUI(); 
bi.setNorthPane(null); 

यह आपके शीर्षक पट्टी के बाद अदृश्य हो जाएगा।

10

मैंने इस समस्या को हल किया: मैं subclass JInternalFrame और उसके कन्स्ट्रक्टर को निम्न कोड जोड़ें। आपके मामले में (मैं मुक्त करने के लिए उपवर्गीकरण मिलता क्योंकि मैं NetBeans 'जीयूआई बिल्डर का उपयोग)

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

मुझे लगता है कि

+0

अच्छा, यह सही जवाब है, .setUI (शून्य) के विपरीत! मैंने कहीं भी पढ़ा है कि आपको कुछ घटनाओं (जैसे खिड़की को कम करने) के बाद इसे फिर से करने की आवश्यकता हो सकती है –

+0

यह सही उत्तर है। यह भी उपयोगी होता है जब 'frame.setBorder (null); 'के साथ संयुक्त होता है;' ['JInternalFrame'] का उपयोग करने के लिए (https://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html) एक शीर्ष-स्तर ['JFrame'] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html) के भीतर एक एकल घटक के रूप में जैसे कि यह एक [' जेपीनेल था '] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html)। – vallismortis

+0

मेरे लिए काम किया। मैं कोशिश करने वाला भी नहीं था, लेकिन आकर्षण की तरह काम करता है। धन्यवाद। – George

0

मेरे लिए यह बहुत अच्छी तरह से काम करता है:

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

धन्यवाद।

संबंधित मुद्दे