我正在制作一款游戏,玩家会提出问题,然后通过选择四个按钮之一来回答问题。我有两个类,一个是“QuestionsAndButtons”,另一个是“Main”。我想从“QuestionsAndButtons”类中的字符串数组列表中获取一个元素,并将其显示到“Main”类中的 JButton 上。
当单击“generalknowledge”按钮时,我想将 arraylist 项设置为 JButton“option1”。
主类:
generalKnowledge.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Categories1.setVisible(false);
GeneralKnowledge1.setVisible(true);
String q = quest.getAQuestion(0);
question1.setText(q);
String b1 = quest.getButtons(0);
option1.setText(b1);
}
});
QuestionsAndButtons 类:
private ArrayList<String> buttonsGK1;
public QuestionsAndButtons(){
questionsGeneralKnowledge=new ArrayList<>();
buttonsGK1=new ArrayList<>();
buttonsGK1.add("Eeyore");
buttonsGK1.add("Tigger");
buttonsGK1.add("Piglet");
buttonsGK1.add("Rabbit");
}
public String getButtons(int j) {
return buttonsGK1.get(j);
}
此外,每次运行代码时,只要单击“一般知识”按钮,我就会收到此错误:
线程“AWT-EventQueue-0”中的异常 java.lang.IndexOutOfBoundsException:索引 0 超出长度 0 的范围
最佳答案
使用数组中的每个选项创建一个 JButton
所需要做的就是:
- 创建与选项长度相同的
JButton
数组 - 迭代您的选项并使用选项文本创建一个新的
JButton
- 将每个
JButton
添加到您正在使用的JPanel
/JFrame
例如:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ArrayToButtons {
private JFrame frame;
private JPanel pane;
private JButton[] buttons;
private static final String[] OPTIONS = {"Eagle", "Rabbit", "Dolphin", "Apple"};
public static void main(String[] args) {
SwingUtilities.invokeLater(new ArrayToButtons()::createAndShowGui);
}
private void createAndShowGui() {
frame = new JFrame(getClass().getSimpleName());
pane = new JPanel();
pane.setLayout(new GridLayout(2, 2));
buttons = new JButton[OPTIONS.length];
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton(OPTIONS[i]);
pane.add(buttons[i]);
}
frame.add(new JLabel("Which is not an animal?"), BorderLayout.NORTH);
frame.add(pane, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
关于java - 如何将数组列表项设置为 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178594/