我想获取按钮文本值来执行单击命令,但我找不到正确的代码来执行此操作。我想我需要一个代码来替换下面显示的代码中的//按钮文本值//。
package test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main implements ActionListener{
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(420,420);
frame.setLayout(new GridLayout(1,1));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton();
button.setText("1");
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button {
if(//button text value// == 1) {
button.setText("3");
}
if(//button text value// == 1) {
button.setText("2");
}
}
您的代码没有包含正确的想法,即按下按钮时会发生什么,所以我决定每次将其增加到 3。
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Main {
JFrame frame = new JFrame();
JButton button = new JButton();
public static void main(String[] args) {
SwingUtilities.invokeLater(()->new Main());
}
Main() {
button.setText("1");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(button.getText().equals("1")) {
button.setText("2");
}
else if(button.getText().equals("2")) {
button.setText("3");
}
else if(button.getText().equals("3")) {
button.setText("1");
}
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
frame.add(button);
frame.pack();
frame.setSize(420,420);
frame.setVisible(true);
}
}
首先,您的
actionPerformed
无法使用 JButton,因为它在您的 main 方法中被声明为局部变量。
简要总结一下这段代码的作用,它将按钮的值设置为 1,并添加一个
ActionListener
(请记住,您不必检查是否为 e.getSource()==button
,因为只有按下按钮时才会运行)它获取文本并递增它(如果值为 3,则将其重置为 1),然后基本上将此按钮添加到 JFrame 中。