我正在制作一个拍卖游戏,我将显示一个供用户出价的项目。如果用户不喜欢该项目,则通过单击下一个项目按钮来竞标另一个项目。然后显示另一个项目。这就是问题所在。当我在动作监听器中为按钮写一个continue语句时,它表示继续不能在循环之外使用。
答案 0 :(得分:1)
同样,我非常怀疑你在这种情况下会想要使用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();
}
});
}
}