如何在ActionListener中退出方法
我有一个连接到JTextField
的ActionListener
,并希望键入一些东西,以便它将退出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
输出数据。
问题摘要:我试着打电话回来; 但它没有返回方法main(),我该如何解决这个问题?
基本上你需要的是某种modal dialog,这将允许你有效地停止程序的执行,直到对话框被解除(关闭),执行将继续…
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); } } }
有关更多详细信息,请参见如何创建对话框