我正在制作一个游戏,其中提出问题并且玩家通过选择四个按钮中的一个来回答它们。我有两个课程,一个是问题和问题按钮'另一个是' Main'。我想从“问题和关键词”中的字符串组合中获取一个元素。分类并将其显示在我的主要'中的JButton上。类。
当'一般知识'单击按钮,我想将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);
}
此外,每次运行我的代码时,只要点击“常识”,我就会收到此错误消息。按钮:
线程中的异常&#34; AWT-EventQueue-0&#34; java.lang.IndexOutOfBoundsException:索引0越界长度为0
答案 0 :(得分:1)
您需要使用数组中的每个选项创建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);
}
}
答案 1 :(得分:0)
我很感谢你的答案@Frakcool,但我已经有了一个界面,因为我正在使用GUI表单,所以我想要的是一个简单的方法来设置我的arraylist到我的JButton'option1'的答案之一。
有没有办法解决这个问题?
答案 2 :(得分:0)
将按钮放在数组或列表中,然后迭代按钮数组和标题数组并设置标题:
JButton buttons[];
List<String> titles = quest.getButtons();
for (int i = 0; i < titles.size(); i++) {
buttons[i].setText(titles.get(i));
}
其中quest.getButtons()返回样本中的buttonsGK1
字段。
创建GUI时需要初始化buttons
数组。 Frakcool's answer显示了所有这些方面,您只需要采用自己案例的解决方案。