Java 为什么JInternalFrame会移除所有其他组件
我在我的Java 为什么JInternalFrame会移除所有其他组件,java,swing,jinternalframe,Java,Swing,Jinternalframe,我在我的JFrame中添加了JInternalFrame,添加框架的方法是单击JMenuItem图标,这很好,但一旦添加框架,旧组件就会被删除,并显示白色。我试图做的是设置另一个组件的fixJInternalFrame位置,而不影响其他组件 JInternalFrame的代码 package animeaidvlcj; import javax.swing.JInternalFrame; /* Used by InternalFrameDemo.java. */ public cl
JFrame
中添加了JInternalFrame
,添加框架的方法是单击JMenuItem
图标,这很好,但一旦添加框架,旧组件就会被删除,并显示白色。我试图做的是设置另一个组件的fixJInternalFrame
位置,而不影响其他组件
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) {}
}
“为什么JInternalFrame会删除所有其他组件”
首先在您的操作中查看此代码
desktop = new JDesktopPane();
createFrame();
setContentPane(desktop); <== this line in particular
desktop=newjdesktoppane();
createFrame();
setContentPane(桌面);我正在尝试为vlcj使用其他帧,因此其他选项是个坏主意,但我是否可以将setContentPane(桌面)替换为其他帧,如jpanelDo?两个帧需要同时访问?例如,当新窗口打开时,是否希望能够访问主框架?当然可以。但我不确定,因为我认为vlcj可以在另一个框架中运行,而我正在使用主框架。您可以创建一个ModelesssJDialog
您创建它就像一个框架一样。唯一的区别是它不会包含在主框架内。但是,如果您确实希望将jdeesktoppane与内部框架一起使用,那么您必须将应用程序重新构造为围绕桌面窗格构建。您只需将内容窗格与框架切换,并期望原始内容窗格上的组件仍然显示。对于该对话框,只需setModel(false)
。能否将JDialog嵌入到jframed中以便更快地获得更好的帮助,请发布一个(最简单的完整且可验证的示例)。