java - 如何在 while 循环内使用按钮的 Action 监听器?

标签 java swing loops while-loop do-while

我正在制作一个拍卖游戏,我将显示一个项目供用户竞价。如果用户不喜欢该项目,他可以通过单击下一个项目按钮来出价购买另一个项目。然后显示另一个项目。这就是问题所在。当我在按钮的操作监听器中编写 continue 语句时,它说 continue 不能在循环之外使用。

最佳答案

同样,我非常怀疑您在这种情况下是否需要使用 while 循环。相反,您可能会将项目保存在集合中,例如 ArrayList 或简单数组,有一个 int 索引变量,并在按下按钮时递增索引,然后使用新的高级索引检索集合中的下一个项目。例如

import java.awt.event.ActionEvent;
import javax.swing.*;

@SuppressWarnings("serial")
public class NextItem extends JPanel {
    private static final String[] ITEMS = { "Sun", "Mon", "Tues", "Wed",
            "Thurs", "Fri", "Sat" };
    private JTextField displayField = new JTextField(10);
    private JButton nextBtn = new JButton(new NextAction("Next"));
    private int itemsIndex = 0;

    public NextItem() {
        displayField.setText(ITEMS[itemsIndex]);
        displayField.setFocusable(false);
        add(displayField);
        add(nextBtn);
    }

    private class NextAction extends AbstractAction {
        public NextAction(String name) {
            super(name); // give button its text
            int mnemonic = (int) name.charAt(0);
            putValue(MNEMONIC_KEY, mnemonic);  // give button a hot key
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            itemsIndex++; // advance index
            itemsIndex %= ITEMS.length; // renormalize it -- set to 0 if too large
            displayField.setText(ITEMS[itemsIndex]);
        }
    }

    private static void createAndShowGui() {
        NextItem mainPanel = new NextItem();

        JFrame frame = new JFrame("NextItem");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }
        });
    }
}

关于java - 如何在 while 循环内使用按钮的 Action 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33319853/

相关文章:

java - 重写为 MVC 后 GUI 无法正常工作

python - 如何根据位置更改 Python 中字典中键的值?

java - for 循环提前中断

java - 谁能告诉我这里的试卷要求什么?

java - 如何自定义 Apache Nutch 2.3 生成步骤

java - 如何在 JFrame 中渲染一个面板

java - 每小时用新数据更新一次 JLabel

java - 将 String 转换为 Char 数组,然后仅返回数组的偶数索引

安装数据库的java应用程序

java - 使用java应用程序模拟按键