gpt4 book ai didi

java - JLabel 并通过 JLabel 的 setText(...) 方法交换其保存的文本

转载 作者:行者123 更新时间:2023-12-01 13:09:43 26 4
gpt4 key购买 nike

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

我在让问题字段显示 36 个问题时遇到问题,从 0 + 1 开始,当用户单击正确的按钮时,它会显示问题 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");
}
}
}

最佳答案

更改操作监听器中的一行代码。更改此:

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 是什么

关于java - JLabel 并通过 JLabel 的 setText(...) 方法交换其保存的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22977030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com