我在JInternalFrame
内添加JFrame
完成后,添加框架的方法是点击JMenuItem
图标,这样就可以了,但是当添加了框架时旧组件被删除,白色显示。我想要做的是设置修复JInternalFrame
位置与其他组件没有影响其他组件
JInternalFrame的代码
package animeaidvlcj;
import javax.swing.JInternalFrame;
/* Used by InternalFrameDemo.java. */
public class MyInternalFrame extends JInternalFrame {
static int openFrameCount = 0;
static final int xOffset = 0, yOffset = 25;
public MyInternalFrame() {
super("Document #" + (++openFrameCount),
true, //resizable
true, //closable
true, //maximizable
true);//iconifiable
//...Create the GUI and put it in the window...
//...Then set the window size or call pack...
setSize(300,300);
//Set the window's location.
setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
}
}
行动代码
Action newAction = new AbstractAction("New", newIcon) {
@Override
public void actionPerformed(ActionEvent e) {
desktop = new JDesktopPane();
createFrame();
setContentPane(desktop);
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
}
};
创建方法
protected void createFrame() {
MyInternalFrame frame = new MyInternalFrame();
frame.setVisible(true); //necessary as of 1.3
desktop.add(frame);
try {
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}
}
答案 0 :(得分:2)
"为什么JInternalFrame会删除所有其他组件"
首先,请在Action
desktop = new JDesktopPane();
createFrame();
setContentPane(desktop); <== this line in particular
您正在使用setContenPane()
设置框架的内容窗格(假设desktop
正在调用类框架),这将删除包含所有组件的上一个内容窗格。因此,唯一会显示的是desktop
以及新的JInternalFrame
。
除非您要创建Multiple Document Interface (MDI),主要用于桌面窗格和内部框架,否则我建议您使用JDialog
并忘记DesktopPane
。你可以看到How to use Dialogs。除了您可以选择modality之外,它与创建JFrame
几乎相同。