gpt4 book ai didi

java - JDialog WindowOpened 事件只触发一次

转载 作者:行者123 更新时间:2023-11-30 07:18:44 24 4
gpt4 key购买 nike

我正在尝试从 JDialog 获取 WindowOpened 事件,但它只触发了一次。为什么 windowClosing 正常工作而 WindowOpened 只工作一次?有没有办法每次都为 JDialog 触发打开事件?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

public class NewClass extends JDialog {

public void init() {
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
setModal(true);
setSize(100,100);
setLocationRelativeTo(null);
}

public void addListener() {
addWindowListener(
new java.awt.event.WindowAdapter() {
public void windowOpened(WindowEvent e) {
System.out.println("Invoking WindowOpened from JDialog");
}
public void windowClosing(WindowEvent e) {
System.out.println("Invoking WindowClosing from JDialog");
dispose();
}
});
}

public static void main( String args[]) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(200,70);

final NewClass d = new NewClass();
d.init();
d.addListener();

JButton b = new JButton("Show Dialog");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
d.setVisible(true);
}
});

f.getContentPane().add(b);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}

最佳答案

ComponentListener#componentShown(ComponentEvent e)每当您的窗口可见时都会触发。

我不认为 WindowActivated 是一个好的选择(就像其他人所说的那样),因为它可以在其他一些情况下被触发。例如,如果您的 Dialog 不是模态的,则只要窗口重新获得焦点,就会触发 WindowActivated。

关于java - JDialog WindowOpened 事件只触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140582/

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