当前位置: 首页 > 知识库问答 >
问题:

如何将arraylist项设置为JButton

羊舌承天
2023-03-14

我在做一个游戏,提问和玩家通过选择四个按钮之一来回答他们。我有两门课,一门是'QuestionsandButtons',另一门是'Main'。我想从'QuestionSandButtons'类中的arraylist字符串中获取一个元素,并将其显示到'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);
            }
        });
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的界限

共有1个答案

唐哲
2023-03-14

使用数组中的每个选项创建JButton所需要的是:

  1. 创建与选项长度相同的JButton数组
  2. 遍历选项并使用选项文本创建新的JButton
  3. 将每个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);
    }
}
 类似资料:
  • 我是android开发新手。 我想连接(添加一个字符串到数组列表中的每个项目)并将其设置为我的微调器 我有两个阵列: 数组1= 数组2= 所以我设置只有Array1在这样的旋转: 现在,这是旋转器中显示的内容: 项目1 项目2 项目3 项目4 如何将数组2中的项添加到数组1中的项,以便在微调器中显示类似的内容 项目1、A 项目2,B 项目3,C 项目4,D 对于一个字符串,我可以这样做: 但这是一

  • 问题内容: 我尝试过这种方式,但是它没有改变吗? 问题答案: 最好使用.png文件;.ico是Windows特定的。最好不要使用文件,而是使用类资源(可以包装在应用程序的jar中)。 尽管您甚至可能考虑将setIconImages用于多种尺寸的图标。

  • 我使用的是Spring Kafka 2.2.7,我已经将配置为,并使用消费消息,一切都按预期运行。 我想添加一个来记录所有消耗的消息,但发现很难配置它。留档指出可以在容器上设置RecordInterceptor,但我不确定如何获取容器的实例。 从版本2.2.7开始,您可以向侦听器容器添加RecordInterceptor;它将在调用允许检查或修改记录的侦听器之前被调用。 我查阅了Spring文档,

  • 问题内容: 我一直在试验Kafka,并从主站点的文档中看到,您可以为jvm设置不同的选项,例如堆大小和它使用的垃圾收集器: http://kafka.apache.org/documentation.html#java 但是,没有说的是如何/在何处设置这些选项。该应用程序带有一个/ config目录,其中包含许多用于配置目的的文件,但没有用于Java的文件。它还带有一个/ bin目录,其中包含一堆

  • 我一直在试验与Kafka和看到从主网站上的留档,你可以设置不同的选项为jvm像堆大小和垃圾收集器,它使用: http://kafka.apache.org/documentation.html#java 然而,它没有说明如何/在哪里设置这些选项。该应用程序附带了一个/config目录,其中包含许多用于配置的文件,但没有一个是用于Java的。它还附带了一个/bin目录,其中包含了一堆Kafka的脚本

  • 问题内容: elasticsearch 中该选项的一个好用例是什么?我在es网站上找不到足够的解释。 问题答案: 范数是一个值,它与字段一起存储在索引中,用于评分。使用默认的评分算法,它结合了一个(用于对短字段进行加权而不是对长字段进行加权)和任何字段级别的提升。您可以在Lucene文档中查看有关它的更多信息。 LengthNorm方面在适当的全文字段上最有帮助。在不需要场增强的结构化字段上,可以