2011-08-28 92 views
8

Tôi tìm thấy một số mã trực tuyến, tôi đã chỉnh sửa nó một chút. Tôi muốn ẩn thanh tiêu đề của một JInternalFrame.thanh tiêu đề ẩn của JInternalFrame? -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); 

Vấn đề là thanh tiêu đề không bị ẩn vì lý do nào đó. Cảm ơn.

Trả lời

11

Đầu tiên chuyển đổi khung nội bộ thành basicinternalframe.

làm điều đó như thế này: -

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

Sau này thanh tiêu đề của bạn sẽ được ẩn.

10

Tôi đã giải quyết vấn đề này theo cách này: Tôi phân lớp JInternalFrame và thêm mã sau vào hàm tạo của nó. (Tôi nhận được subclassing miễn phí vì tôi sử dụng GUI Builder NetBeans')

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

trong trường hợp của bạn tôi nghĩ

+0

Tốt, đây là câu trả lời đúng, không giống như .setUI (null)! Tôi cũng đọc một nơi nào đó mà bạn có thể cần phải làm điều này một lần nữa sau khi các sự kiện nhất định (như giảm thiểu cửa sổ) –

+0

Đây là câu trả lời đúng. Nó cũng hữu ích khi được kết hợp với 'frame.setBorder (null);' để sử dụng ['JInternalFrame'] (https://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html) như một thành phần solo trong một cấp cao nhất ['JFrame'] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html) như thể nó là một [' JPanel '] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html). – vallismortis

+0

Làm việc cho tôi. Tôi thậm chí không cố gắng, nhưng hoạt động như sự quyến rũ. Cảm ơn bạn. – George

0

đối với tôi đây hoạt động rất tốt:

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

nhờ.

Các vấn đề liên quan