gpt4 book ai didi

java - 一个简单的 GUI 乘法表

转载 作者:行者123 更新时间:2023-12-02 06:07:33 26 4
gpt4 key购买 nike

我应该使用 GUI 创建一个简单的乘法表,并且在大多数情况下,它正在做它应该做的事情。但我只是无法弄清楚它的底部部分,如果您单击特定按钮,则会有一条文本说明两个数字相乘的结果以及答案。

无论我点击哪个按钮,它只会告诉我我输入的数字并将它们相乘。这是我的代码:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JOptionPane;

public class MultiplicationTable {
int clickedCount;
int rowCount;
int colCount;

JFrame frame;
JPanel buttonPanel, countPanel;
JLabel countLabel;


private void createAndShowGui(){

rowCount = Integer.parseInt(JOptionPane
.showInputDialog("How many rows do you want your multiplication table to be? "));

colCount = Integer
.parseInt(JOptionPane
.showInputDialog("How many columns do you want your multiplication table to be? "));



frame = new JFrame ("Simple Multiplication Table");
frame.setLayout(new BorderLayout());

buttonPanel = new JPanel();

buttonPanel.setLayout(new GridLayout(rowCount, colCount));


countPanel = new JPanel();
countLabel = new JLabel("? x ? = ?");

for(int rowCounter = 1; rowCounter <= rowCount; rowCounter++)
for(int colCounter = 1; colCounter <= colCount; colCounter++){

final JButton j = new JButton(Integer.toString(rowCounter * colCounter));

j.addActionListener(new ActionListener(){


@Override
public void actionPerformed(ActionEvent event) {
for(int rc = 1; rc <= rowCount; rc++)
for(int cc = 1; cc <= colCount; cc++){
countLabel.setText(rc + " x " + cc + " = " + String.valueOf(rc * cc));
}
}
});

buttonPanel.add(j);
}

frame.add(buttonPanel, BorderLayout.NORTH);
countPanel.add(countLabel);
frame.add(countPanel, BorderLayout.SOUTH);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args){
MultiplicationTable c = new MultiplicationTable();
c.createAndShowGui();
}
}

最佳答案

您当前的 ActionListener 没有上下文,它不知道使用哪两个值来生成您为按钮提供的值。

您可以做的是创建一个 ActionListener ,它获取用于生成按钮文本的值,然后能够相应地更新标签。例如...

public class MultiplerActionListener implements ActionListener {
private int[] values;
private JLabel label;
public MultiplerActionListener(JLabel label, int... valuesToMultiple) {
values = valuesToMultiple;
this.label = label;
}

@Override
public void actionPerformed(ActionEvent event) {
int answer = 1;
StringBuilder sb = new StringBuilder(64);
for (int value : values) {
if (sb.length() > 0) {
sb.append(" x ");
}
sb.append(value);
answer *= value;
}
sb.append(" = ");
sb.append(answer);
label.setText(sb.toString());
}
}

然后您只需在创建按钮时应用它

for(int rowCounter = 1; rowCounter <= rowCount; rowCounter++) {
for(int colCounter = 1; colCounter <= colCount; colCounter++){
final JButton j = new JButton(Integer.toString(rowCounter * colCounter));
j.addActionListener(new MultiplerActionListener(countLabel, rowCounter, colCounter));
buttonPanel.add(j);
}
}

关于java - 一个简单的 GUI 乘法表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159218/

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