为什么我的 Jbutton 在点击时不会做任何事情?



我一直试图使它,所以我的按钮将关闭在帧点击,但它从来没有做任何事情。我已经看过几个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标签中的几个问题即可获得示例)。从一开始就学习使用布局管理器

相关内容

  • 没有找到相关文章

最新更新