我希望在单击时回忆一个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是否有单独的名称)
谢谢,如果这是初级的,很抱歉
阅读下面的代码,你会有一些想法。。。
每次使用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