按钮点击,新窗口(内部框架)应该打开,我的代码出了什么问题? 有人可以解释desktopane和internalframe之间的关系 常规内容窗格?
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 :(得分:1)
看起来您正在将桌面和按钮添加到内容窗格的CENTER,使按钮替换桌面窗格,因此您永远不会看到它。
// 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);
答案 1 :(得分:0)
我不相信你可以在窗格中添加框架。如果你看一下摇摆容器的层次结构。它会去Label - >窗格 - >帧。我认为您的代码存在的问题是在您执行时
desktop.add(internalFrame);
我会将桌面更改为新的JFrame
desktop = new JFrame();
http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html
这篇文章谈到了你与顶级容器的关系。
答案 2 :(得分:0)
在创建jinternaframe后添加此代码:
internalFrame.setBounds(110, 130, 105, 70);
desktopPane.add(internalFrame, JLayeredPane.DEFAULT_LAYER);