为什么我的 Jbutton 在点击时不执行任何操作?
Why won't my Jbutton do anything on click?
我一直在努力让我的按钮在点击时关闭框架,但它什么也没做。我浏览了几个 Whosebug 线程,但其中 none 似乎适用于我的这个..这是我目前所拥有的
JButton start = new JButton("Start");
start.setBounds(251, 216, 119, 23);
start.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
try {
int hpToEat = Integer.parseInt(GUI.textField.getText());
Frost.hp = hpToEat;
} catch(NumberFormatException nfe) {
GUI.textField.setText("");
}
setVisible(false);
}
});
contentPane.add(start);
我尝试制作一个使用 super.dispose(); 的 closeFrame 方法;我也试过 system.exit(0);
有谁知道为什么我的按钮不能执行我想要它执行的操作?
有人请求我的其余代码,所以这里是:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JTextField;
import javax.swing.JButton;
public class GUI extends JFrame{
private JPanel contentPane;
public static JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI frame = new GUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GUI() {
//LABELS ===================================================================================================
问题是 GUI.textfield
不是你想的那样。您在此处遮挡字段:
JTextField textField = new JTextField();
这会创建一个名为 textField
的 local 变量,它不会设置您在动作侦听器中使用的静态字段。一个快速的解决方法是只写:
textField = new JTextField();
但是,我建议改掉使用静态字段的习惯。这种方法无法扩展。此外,不要使用绝对定位。它会导致无穷无尽的麻烦(只需浏览 swing 标签中的几个问题以获取示例)。从一开始就学会使用布局管理器。
我一直在努力让我的按钮在点击时关闭框架,但它什么也没做。我浏览了几个 Whosebug 线程,但其中 none 似乎适用于我的这个..这是我目前所拥有的
JButton start = new JButton("Start");
start.setBounds(251, 216, 119, 23);
start.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
try {
int hpToEat = Integer.parseInt(GUI.textField.getText());
Frost.hp = hpToEat;
} catch(NumberFormatException nfe) {
GUI.textField.setText("");
}
setVisible(false);
}
});
contentPane.add(start);
我尝试制作一个使用 super.dispose(); 的 closeFrame 方法;我也试过 system.exit(0);
有谁知道为什么我的按钮不能执行我想要它执行的操作?
有人请求我的其余代码,所以这里是:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JTextField;
import javax.swing.JButton;
public class GUI extends JFrame{
private JPanel contentPane;
public static JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI frame = new GUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GUI() {
//LABELS ===================================================================================================
问题是 GUI.textfield
不是你想的那样。您在此处遮挡字段:
JTextField textField = new JTextField();
这会创建一个名为 textField
的 local 变量,它不会设置您在动作侦听器中使用的静态字段。一个快速的解决方法是只写:
textField = new JTextField();
但是,我建议改掉使用静态字段的习惯。这种方法无法扩展。此外,不要使用绝对定位。它会导致无穷无尽的麻烦(只需浏览 swing 标签中的几个问题以获取示例)。从一开始就学会使用布局管理器。