我一直在尝试这样做,所以我的按钮会在点击时关闭框架,但它从不做任何事情。我已经查看了几个stackoverflow线程,但它们似乎都不适用于我的...这是我到目前为止所拥有的
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 ===================================================================================================
答案 0 :(得分:3)
问题是double
不是您认为的那样。你在这里遮蔽了这个领域:
GUI.textfield
通过名称JTextField textField = new JTextField();
创建本地变量,它不会设置您在动作侦听器中使用的静态字段。快速修复就是写:
textField
但是,我建议不要使用静态字段。这种方法无法扩展。此外,不使用绝对定位。它可以带来麻烦(例如,只需浏览swing标签中的几个问题)。学习从一开始就使用布局管理器。