Java JLabel,并通过JLabel';s setText(…)方法

Java JLabel,并通过JLabel';s setText(…)方法,java,arrays,swing,jbutton,Java,Arrays,Swing,Jbutton,问题字段应包含36个问题,这些问题的答案在网格中的36个按钮上 我在让问题字段显示36个问题时遇到了一个问题,从0+1开始,当用户单击正确的按钮时,它会显示问题2,在字段中显示问题2,即1+1,直到问题36为止 那么,如何获得一个问题JLabel并通过JLabel的setText(…)方法交换它持有的文本呢 这是我的密码 import java.awt.*; import java.awt.event.*; import java.awt.event.ActionListener; import

问题字段应包含36个问题,这些问题的答案在网格中的36个按钮上

我在让问题字段显示36个问题时遇到了一个问题,从0+1开始,当用户单击正确的按钮时,它会显示问题2,在字段中显示问题2,即1+1,直到问题36为止

那么,如何获得一个问题JLabel并通过JLabel的setText(…)方法交换它持有的文本呢

这是我的密码

import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;
class NewClass {
    final int ROWS = 6;
    final int COLUMNS = 6;
    JButton[] buttons = new JButton[ROWS*COLUMNS];
    JLabel statusLabel = new JLabel("",JLabel.CENTER);
    java.util.List<Integer> buttonNumbers = new ArrayList<Integer>();
    int buttonCounter = 1;
    public NewClass()  {
        JPanel buttonPanel = new JPanel(new GridLayout(ROWS,COLUMNS));
        ButtonListener listener = new ButtonListener(NewClass.this);
        for(int x = 0, y = ROWS*COLUMNS; x < y; x++){
            buttons[x] = new JButton();
            buttons[x].addActionListener(listener);
            buttonPanel.add(buttons[x]);
            buttonNumbers.add(new Integer(x+1));
        }
        reset();
        JFrame frame = new JFrame();
        frame.getContentPane().add(statusLabel,BorderLayout.NORTH);
        frame.getContentPane().add(buttonPanel,BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    public void reset(){
        Collections.shuffle(buttonNumbers);
        for(int x = 0, y = ROWS*COLUMNS; x < y; x++){
            buttons[x].setText(String.valueOf(buttonNumbers.get(x)));
        }
        buttonCounter = 1;
        statusLabel.setText("what is 0+ 1  " + buttonCounter);
    }
    public static void main(String[] args) {
        new NewClass();
    }
}
class ButtonListener implements ActionListener {
    NewClass gui;
    ButtonListener(NewClass g){
        gui = g;
    }
    public void actionPerformed(ActionEvent e) {
        JButton buttonClicked = (JButton)e.getSource();
        int clickedNumber = Integer.parseInt(buttonClicked.getText());
        if(clickedNumber == gui.buttonCounter){
            gui.buttonCounter++;
            buttonClicked.setText("");//optional - clears correct selection
            if(gui.buttonCounter > gui.ROWS*gui.COLUMNS) gui.reset();
            gui.statusLabel.setText("what is 0+ 1" + gui.buttonCounter);
        }
        else {
            gui.reset();
            gui.statusLabel.setText("Incorrect button clicked, start again: what is 0+ 1");
        }
    }
}
import java.awt.*;
导入java.awt.event.*;
导入java.awt.event.ActionListener;
导入java.util.*;
导入javax.swing.*;
类NewClass{
最终整数行=6;
最终整数列=6;
JButton[]按钮=新JButton[行*列];
JLabel statusLabel=新的JLabel(“,JLabel.CENTER”);
java.util.List buttonNumbers=新ArrayList();
int按钮计数器=1;
公共类(){
JPanel buttonPanel=新的JPanel(新的网格布局(行、列));
ButtonListener listener=newButtonListener(NewClass.this);
对于(int x=0,y=行*列;xgui.ROWS*gui.COLUMNS)gui.reset();
gui.statusLabel.setText(“什么是0+1”+gui.buttonCounter);
}
否则{
gui.reset();
gui.statusLabel.setText(“单击的按钮不正确,重新开始:什么是0+1”);
}
}
}

更改动作侦听器中的一行代码。更改此项:

gui.statusLabel.setText("what is 0+ 1" + gui.buttonCounter);
为此:

gui.statusLabel.setText("what is " + gui.buttonCounter + "+ 1");
现在它会问:

  • 什么是0+1

  • 什么是1+1

  • 什么是2+1

  • 什么是3+1

  • 什么是1937655087345+1


不同问题可能重复!!你只是玩游戏,对实际答案没有帮助有什么区别?即使点击了正确的答案按钮,游戏仍会转到错误的按钮,再次开始:0+1在我将代码更改为你答案中建议的代码后,我看不出有什么问题。我稍后会设法弄清楚的。