我创建了一个对话框类,当点击JLabel时会打开,但我希望主窗口在点击标签时关闭,更大的问题是标签在一个扩展JPanel的类中。现在,如果点击标签,面板会变成setVisible(false(,你明白我的意思吗,但是,当我尝试在面板类中使用多态性来获得主窗口类和对话框时,它被证明是成功的,但当单击标签时,一个新的类似的主窗口wnidow弹出并立即消失。即它复制了主窗口,我知道这个问题可能看起来像是一个挑战,因为没有代码,文件太复杂了,但我知道有一位专业人士可以了解这个代码并帮助我,谢谢
"一个新的类似的主窗口弹出并立即消失。即复制主窗口,"-
看到你的JPanel
是一个单独的类,我觉得你有一个引用问题。我敢打赌,你所做的是创建一个new MainWindow
,这样你就可以引用它
mousePressed(MouseEvent e) {
MainWindow window = new MainWindow();
window.dispose();
}
这肯定可以解释这个问题。有几种方法可以解决这个问题。我会给你一个新手的方法,因为你看起来仍然像一个新手:D随着你的学习越来越深入,你可能会学到更多正确的方法。因此,您可以执行以下操作,将MainWindow
的引用传递给JPanel
类,而不是创建new 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
时,将MainWindow
的引用传递给MyPanel
,如MyPanel panel = new MyPanel(MainWindow.this);