我创建了一个对话框类,在单击JLabel时会打开,但是我希望在单击标签时关闭主窗口,而更大的问题是标签位于扩展JPanel的类中,如果标签是点击面板就像在setVisible(false)中一样,你明白我的意思,但是当我试图在面板类中使用多态来获得主窗口类和对话框时它被证明是成功的但是当点击标签时类似的主要 wnidow弹出并立即消失。即它重复主窗口,我知道这个问题可能看起来像一个挑战,因为没有代码,文件太复杂但我有一个专业人士可以得到这个代码是什么的图片,并帮助我,谢谢
答案 0 :(得分:0)
"一个新的类似的主要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);