ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-10-31 05:02:26  阅读:230  来源: 互联网

标签:jinternalframe swing jdesktoppane java


我有一个带有此代码的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();
}

标签:jinternalframe,swing,jdesktoppane,java
来源: https://codeday.me/bug/20191031/1973391.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有