2011-12-01 78 views
0

on button click,new window(internal frame)should open,what's wrong with my code? 有人可以解釋desktopane和內部框架之間的關係,只是 常規contentpane?on button click,new window(internal frame)should open,what's wrong with my code?

import javax.swing.*; 
import java.awt.event.*; 

public class tuna extends JFrame{ 

    private JButton button1; 
    JDesktopPane desktop; 
    JInternalFrame internalFrame; 


    public tuna(){ 
     super("iLyrics"); 

     desktop = new JDesktopPane(); 
     add(desktop); 

     button1 = new JButton("Open Internal Frame"); 
     add(button1); 

     button1.addActionListener(

       new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 

           JInternalFrame internalFrame = new JInternalFrame("Internal Frame", true, true, true, true); 
           internalFrame.setBounds(110, 130, 105, 70);     
           desktop.add(internalFrame, JLayeredPane.DEFAULT_LAYER); 
           //desktop.add(internalFrame); 
           internalFrame.setVisible(true); 

        } 
       }); 
    } 
} 
    } 
+0

取而代之的是什麼? – cdeszaq

+0

@cdeszaq什麼都沒有 –

+0

你把尺寸設置爲JInternalFrame還是pack()呢?默認大小是0x0。 –

回答

0

我不相信你可以添加一個框架窗格。如果你看看擺動容器的層次結構。它會去標籤 - >窗格 - >框架。我覺得你的代碼的問題是,當你做

desktop.add(internalFrame); 

我會改變桌面是一個新的JFrame關於與頂層容器的關係

desktop = new JFrame(); 

http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html

這篇文章會談。

+0

OP正在使用JDesktop + JInternalFrame。 JDesktop允許您創建一個MDI樣式的接口,其中包含JInternalFrames。 –

0

創建jinternaframe後添加以下代碼:

internalFrame.setBounds(110, 130, 105, 70);     
desktopPane.add(internalFrame, JLayeredPane.DEFAULT_LAYER); 
+0

並沒有幫助,我有一種感覺這是一個語法錯誤,但我簡化了這一點,我只是不能發現有什麼問題.. –

1

它看起來就像是增加了桌面和按鈕內容窗格中的中心,使得按鈕更換桌面窗格,所以你永遠不會看到它。

// put the desktop in the center 
    desktop = new JDesktopPane(); 
    getContentPane().add(desktop, BorderLayout.CENTER); 

    // but the button at the top 
    button1 = new JButton("Open Internal Frame"); 
    getContentPane().add((button1, BorderLayout.NORTH); 
+0

o我的天哪duhhhhhhhh,謝謝你! –

+0

如果這是問題,請不要忘記接受答案(點擊小複選標記圖標) –