java - 如何循环回到程序开头

标签 java swing while-loop actionlistener

我正在尝试创建一个具有这种条件的 while 循环。 (a > 1) 基本上。每次a设置为大于1时,它都会关闭我创建的JFrame,然后重新启动程序。我的问题是,当我尝试在操作监听器中编辑整数“a”时,它无法识别它已经被声明。实际描述起来有点困难,所以这是我的代码。

    public class TestBox {
    public static void main(String[] args) {
        int a = 2;
            while(a > 1){
                a = 0;
                JFrame frame = new JFrame("Test Box");
                frame.setSize(1200, 800);
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.setResizable(true);
                frame.setLayout(new GridLayout(6, 6, 1, 1));
                JPanel panelAOne = new JPanel();
                JPanel panelATwo = new JPanel();
                JPanel emptySpace = new JPanel();
                JLabel labelAOne = new JLabel();
                labelAOne.setFont(new Font("Aerial", Font.ITALIC, 21));
                labelAOne.setText("Welcome to the Test Box!");
                JLabel labelATwo = new JLabel();
                labelATwo.setFont(new Font("Aerial", Font.ITALIC, 21));
                labelATwo.setText("Where would you like to go?");
                JLabel emptyLabel = new JLabel("stuff goes here");
                JButton buttonAOne = new JButton("Colors");
                panelAOne.add(labelAOne);
                panelAOne.add(labelATwo);
                panelATwo.add(buttonAOne);
                emptySpace.add(emptyLabel);
                frame.add(panelAOne);
                frame.add(buttonAOne);
                frame.add(emptySpace);
                frame.setVisible(true);
                buttonAOne.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        a = 2;
                //If this code is left as is, a GUI will open endlessly until it crashes the computer
            }
            }
        });
    }    
}

最佳答案

您似乎试图将线性控制台程序硬塞到 Swing 事件驱动的 GUI 程序中,反之亦然,但您确实不想这样做,我建议您重新构建您的程序。相反,显示您的 GUI,获取输入,如果错误,则在 GUI 中重新请求输入。不要为此使用控制台类型的程序 while 循环。

因此,例如,如果 ActionListener 发现输入无效,请通过在 JTextField 上调用 setText("") 来清除 JTextField 中的文本,向用户显示一个 JOptionPane 通知他们输入错误并等待再次按下按钮。但保留 JFrame 显示。

编辑:我什至在您的代码中没有看到 JTextField,因此我不确定用户应该在哪里输入内容。

关于java - 如何循环回到程序开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198593/

相关文章:

java - Tomcat 没有在 Eclipse 中关闭

java - Decimalformat:在 JTable 中不需要用逗号替换点

java - 将 JScrollPane 添加到 JSplitPane

java - 我希望图片在滚动时留在 jscrollpane 的左上角

c - 带 while 循环的 fscanf 导致每行两次读取

c - 如何使用 continue 语句将此 for 循环转换为 C 中的 while 循环

java - 合并两个 HashMap 的成本

java - 我可以在 EJB 3 容器内的类路径中动态发现 xml 文件吗?

java - 使用链接在 jlabel 上显示客户的图像。保存在数据库中

php - 将多行 MySQL 数据库返回到 iOS App