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

调用JButton值

东门阳飇
2023-03-14

我希望在单击时回忆一个JButton的值,即当用户单击一个JButton时,该JButton的值(是一个字母)将写入JLabel。用户将单击多个按钮,因此,需要存储和打印多个值。最后,用户将单击一个按钮,保存所有接收到的JButton值的JLabel将被存储(显然是使用数组)。

这是我的JButton在代码中的样子:

theModel.randomLetters();

            for(int i=0;i<16;i++){
                JButton dice = new JButton(theModel.letters.get(i));
                dice.addActionListener(disableButtonListener);
                boggleGrid.add(dice);
            }

模型。随机字母();是对另一个类的引用,其中“字母”是一个包含16个值的数组。我是否需要将每个JButton单独添加到boggleGrid中,以便回忆它们的名字以实现上述目标,或者它们是否有单独的名字,而我不知道?(我使用了别人给我的for循环,所以我不确定每个JButton是否有单独的名称)

谢谢,如果这是初级的,很抱歉

共有1个答案

龚鸿雪
2023-03-14

阅读下面的代码,你会有一些想法。。。

每次使用StringBuilder单击按钮时,我都使用StringBuilder来存储按钮的值。追加(JButton.getText()。toString())。这是在jbutton的actionPerformed方法中完成的。

然后最后在完成按钮actionPerform方法中,我将字符串生成器保存在数组中的文本存储起来。

P、 我知道你用的是16个按钮,为了简单起见,我刚用了3个。。。

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.ArrayList;

public class GUI extends JFrame{


    ArrayList<String> numbers = new ArrayList<>();
    StringBuilder sb = new StringBuilder();
    JButton button1;
    JButton button2;
    JButton button3;
    JButton doneButton;
    JPanel row1 = new JPanel();
    JPanel textLabelRow = new JPanel();
    JLabel label = new JLabel();
    JPanel row3 = new JPanel();

    public void create(){
        setTitle("S-O");
        setSize(500,200);

        setLayout(new GridLayout(3,1,10,10));

        button1 = new JButton("1");
        button2 = new JButton("2");
        button3 = new JButton("3");
        doneButton = new JButton("Done");
        row1.add(button1);
        row1.add(button2);
        row1.add(button3);
        button1.addActionListener(new Button1Listener());
        button2.addActionListener(new Button2Listener());
        button3.addActionListener(new Button3Listener());
        doneButton.addActionListener(new doneButtonListener());


        textLabelRow.add(label);
        row3.add(doneButton);
        add(row1);
        add(textLabelRow);
        add(row3);


        setVisible(true);
    }

    private class Button1Listener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            sb.append(button1.getText().toString());
        }       
    }

    private class Button2Listener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            sb.append(button2.getText().toString());
        }       
    }
    private class Button3Listener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            sb.append(button3.getText().toString());
        }       
    }
    private class doneButtonListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            label.setText(sb.toString());
            numbers.add(sb.toString());
            sb = new StringBuilder();
        }
    }

    public static void main(String[] args){
        GUI start = new GUI();
        start.create();
    }

}

编辑:

您可以只使用一个实现ActionListener的类,而不是为每个JButton使用一个类。

actionPerformed方法中的“public void actionPerformed(ActionEvent ev)”

你必须要ev。getActionCommand(),它将返回导致事件的JButton的文本值。然后可以将其附加到StringBuilder。

大致是这样的:private ArrayList listForEdit=new ArrayList

   class actionHandler implements ActionListener{
         public void actionPerformed(ActionEvent ev){
               if(ev.getActionCommand.equals("Done"))
                listForEdit.add(sbEdit);
                sbEdit = new StringBuilder();
               }
               else{
                    sbEdit.append(ev.getActionCommand());
                    }
              }
 类似资料:
  • 我一直在尝试学习按钮,但它拒绝调整大小。按钮1(下面的代码)只占据了整个屏幕。我看到其他帖子的问题是他们没有使用 但是我正在使用它,它仍然不工作!我还没有制作JPanel。这是我的JFrame: 我的主要课程简单明了:

  • 我正在为一个班做一个基本的乒乓球游戏。我让Pong工作,启动时有一个GUI显示,不幸的是,我似乎无法从开始按钮启动游戏。我已经在代码上注释了问题所在,并删除了不相关的代码。 有什么想法吗?

  • 问题内容: 我正在上一堂基本的Pong游戏。我正在工作Pong,并且在启动时有GUI显示,很遗憾,我似乎无法从JButton开头开始游戏。我已在代码中指出问题所在,并删除了不相关的代码。 有任何想法吗? 问题答案: Swing是一个单线程框架。 也就是说,对UI的所有交互和修改都应在事件调度线程的上下文内进行。阻塞此线程的所有内容都将阻止其处理,尤其是重画请求和用户输入/交互。 我的猜测是正在使用

  • 介绍 (Introduction) JButton类是一个按钮的实现。 此组件具有标签,并在按下时生成事件。 它也可以有一个图像。 Class 声明 (Class Declaration) 以下是javax.swing.JButton类的声明 - public class JButton extends AbstractButton implements Accessible

  • 问题内容: 我正在创建一个包含特定ImageIcon的JButton。主要问题是原始图标的大小比按钮的大小大得多。结果,当显示按钮时,只能看到部分图标。什么是“调整” ImageIcon大小以使其适合JButton的方法? 问题答案: 来自http://www.coderanch.com/t/331731/GUI/java/Resize- ImageIcon

  • 主要内容:1 Java JButton的介绍,2 Java JButton的声明,3 Java JButton构造方法,4 Java JButton的方法,5 Java JButton案例1,6 Java JButton案例21 Java JButton的介绍 JButton类用于创建具有平台独立实现的带标签的按钮。按下按钮后,应用程序将执行某些操作。它继承了AbstractButton类。 2 Java JButton的声明 我们来看一下javax.swing.JButton类的声明。 3 J