我一直试图使它,所以我的按钮将关闭在帧点击,但它从来没有做任何事情。我已经看过几个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 ===================================================================================================
问题是GUI.textfield
不是你想的那样。您正在对这里的字段进行阴影处理:
JTextField textField = new JTextField();
这将创建一个名为textField
的本地变量,它不会设置您在操作侦听器中使用的静态字段。一个快速的解决方法是这样写:
textField = new JTextField();
但是,我建议改掉使用静态字段的习惯。这种方法无法扩展。此外,不要使用绝对定位。它会导致没完没了的麻烦(只需浏览swing标签中的几个问题即可获得示例)。从一开始就学习使用布局管理器