gpt4 book ai didi

java - 如何管理调用另一个 JInternalFrame 的 JInternalFrame?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:53 27 4
gpt4 key购买 nike

我有一个包含这段代码的 JDesktopPane。

public class Menu extends JFrame implements ActionListener{
/**
* Creates new form Portada
*/
public static JDesktopPane desktop;

public JDesktopPane getDesktop() {
return desktop;
}

public Menu() {
desktop = new JDesktopPane();
setContentPane(desktop);

desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
initComponents();
}
}

然后我像这样添加新组件

desktop.add(orden);

当我想调用他们时,我会使用

if(e.getSource()==jMenuItem1_1){
orden.setVisible(true);
desktop.setSelectedFrame(orden);
desktop.moveToFront(orden);
try {
orden.setSelected(true);
} catch (PropertyVetoException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

我遇到的问题是,当“orden”想要弹出另一个 JInternalFrame 时,我使用下一个代码。

searchSupplier.setVisible(true);
Main.getInstance().getPortada().getDesktop().add(searchSupplier);
Main.getInstance().getPortada().getDesktop()
.moveToFront(searchSupplier);
try {
searchSupplier.setSelected(true);
} catch (PropertyVetoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

当我执行该事件超过 2 次时,出现下一个错误:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position

我应该在哪里将新的 JInternalFrame 添加到 DesktopPane?或 Orden?,或我该怎么做才能解决此错误?

最佳答案

如果 searchSupplier 框架已经在桌面上,您不太可能能够再次添加它。尝试使用 getParent 来确定是否需要添加框架

if (searchSupplier.getParent() == null) {
Main.getInstance().getPortada().getDesktop().add(searchSupplier);
}
searchSupplier.setVisible(true);
Main.getInstance().getPortada().getDesktop().moveToFront(searchSupplier);
try {
searchSupplier.setSelected(true);
} catch (PropertyVetoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

关于java - 如何管理调用另一个 JInternalFrame 的 JInternalFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com