Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何在打开对话框时关闭窗口_Java_Swing_User Interface_Jframe - Fatal编程技术网

Java-如何在打开对话框时关闭窗口

Java-如何在打开对话框时关闭窗口,java,swing,user-interface,jframe,Java,Swing,User Interface,Jframe,我创建了一个对话框类,在单击JLabel时打开,但我希望在单击标签时关闭主窗口,更大的问题是,标签位于扩展JPanel的类中。现在,如果单击标签,面板将变为setVisible(false),您明白我的意思了吗,但是当我尝试在panel类中使用多态性来获得主窗口类和对话框时,它被证明是成功的,但是当标签被单击时,一个新的类似的主窗口 wnidow弹出并立即消失。ie它复制了主窗口,我知道这个问题可能看起来像一个挑战,因为没有代码,文件太复杂了,但我知道有一个专业人士可以了解这个代码是什么,并帮助

我创建了一个对话框类,在单击JLabel时打开,但我希望在单击标签时关闭主窗口,更大的问题是,标签位于扩展JPanel的类中。现在,如果单击标签,面板将变为setVisible(false),您明白我的意思了吗,但是当我尝试在panel类中使用多态性来获得主窗口类和对话框时,它被证明是成功的,但是当标签被单击时,一个新的类似的主窗口 wnidow弹出并立即消失。ie它复制了主窗口,我知道这个问题可能看起来像一个挑战,因为没有代码,文件太复杂了,但我知道有一个专业人士可以了解这个代码是什么,并帮助我,谢谢

“一个新的类似的主wnidow弹出并立即消失。即它复制了主窗口,”

看到你的
JPanel
是一个独立的类,我觉得你有一个引用问题。我打赌您所做的是创建一个
新的主窗口
,以便可以引用它。像

mousePressed(MouseEvent e) {
    MainWindow window = new MainWindow();
    window.dispose();
} 
这肯定可以解释这个问题。有几种方法可以解决这个问题。我要给你一个新手的方法,因为你看起来仍然像个新手:D随着你的学习深入,你可能会学到更多正确的方法。因此,您可以执行如下操作,将
MainWindow
的引用传递给
JPanel
类,而不是创建一个
新的MainWindow

public class MyPanel extends JPanel {
    private MainWindow window;

    public MyPanel(final MainWindow window) {
        this.window = window;
        JLabel label = new Label();
        label.addMouseListener(new MouseAdapter(){
            public void mousePressed(MouseEvent e) {
                window.setVisible(false); // or dispose
            }
        });
    } 
}

实例化
MyPanel
时,将
main窗口的引用传递给
MyPanel
,如
MyPanel=newmypanel(MainWindow.this)

在这里也显示一些代码,这样我们就可以帮助我在这篇帖子中回答了你的问题(),你不感谢你的帮助,所以这次我不想麻烦你帮忙。对不起,卡米克,我不能放弃,因为我没有足够的特权这么做,但我可以接受你的问题。你是专业的,这就是向这个新手展示如何做到的