gpt4 book ai didi

java - 如何退出 ActionListener 中的方法

转载 作者:行者123 更新时间:2023-12-01 22:31:59 25 4
gpt4 key购买 nike

我有一个连接到 JTextFieldActionListener,并且想要输入一些内容,以便它退出 ActionListener 所在的方法。

代码:

main() {
Security(x,x,x);
}
public void Security(JTextArea out, JTextField in) {
in.setText("");
in.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (in.getText().contains("exitsys")) {
out.append("Security:Security System Deactivated\n");
return;
}
in.setText("");
}
});
out.append("Security:Security System Activated\n");
fileWrite(":SYSTEM_INITIATED@" + time(), out);
}

我想输入“exitsys”并返回到主类方法“main()”

fileWrite 方法使用 PrintWriter 输出数据。

问题摘要:我尝试调用 return;但它没有返回到方法 main(),我该如何解决这个问题?

最佳答案

基本上,您需要的是某种模式对话框,它允许您在对话框可见时有效地停止程序的执行,直到对话框被解除(关闭),此时执行将继续...

import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

public static void main(String[] args) {
new Test();
}

public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

JDialog dialog = new JDialog();
dialog.setTitle("Testing");
dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dialog.add(new TestPane());
dialog.pack();
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);

System.out.println("Now back in the main...");
}
});
}

public class TestPane extends JPanel {

private JTextField field;

public TestPane() {

setLayout(new GridBagLayout());

field = new JTextField(10);
field.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
if ("exitsys".equals(field.getText())) {
SwingUtilities.getWindowAncestor(field).dispose();
}
}
});

add(field);

}

}

}

参见How to Make Dialogs了解更多详情

关于java - 如何退出 ActionListener 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27560703/

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