Java 单击某个按钮时从JPanel中删除文本

Java 单击某个按钮时从JPanel中删除文本,java,swing,awt,jbutton,jtextfield,Java,Swing,Awt,Jbutton,Jtextfield,我正在尝试为我正在开发的基于文本的冒险游戏创建GUI。 我需要让它做的是,当点击按钮“jButton3”时, 它将删除“jText1”的文本。我尝试添加一个ItemListener,但似乎无法理解。代码如下。为了简单起见,我省略了所有的导入,以及我的包名,只是知道当我尝试运行这个程序时没有任何错误 我已经搜索了与我的主题相关的其他帖子,但找不到确切的内容,其中大多数都是关于将文本字段中的文本替换为JLabel public class DemoGUI extends javax.swing.JF

我正在尝试为我正在开发的基于文本的冒险游戏创建GUI。 我需要让它做的是,当点击按钮“jButton3”时, 它将删除“jText1”的文本。我尝试添加一个ItemListener,但似乎无法理解。代码如下。为了简单起见,我省略了所有的导入,以及我的包名,只是知道当我尝试运行这个程序时没有任何错误

我已经搜索了与我的主题相关的其他帖子,但找不到确切的内容,其中大多数都是关于将文本字段中的文本替换为JLabel

public class DemoGUI extends javax.swing.JFrame {
    public JLabel jLabel1;
    public JTextField jText1;
    public JButton jButton1;
    public JButton jButton2;
    public JButton jButton3;
    String string1;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                DemoGUI inst = new DemoGUI();
                inst.setLocationRelativeTo(null);
                inst.setVisible(true);
            }
        });
    }
    public DemoGUI() {
        super();
        initGUI();
    }
    private void removeTextWhenClicked(JButton btn, ItemEvent ev) {
        if(ev.getStateChange() == ItemEvent.ITEM_STATE_CHANGED) {
            jText1.setText("");
        }
    }

    public void initGUI() {
        try {
            FlowLayout thisLayout = new FlowLayout();
            getContentPane().setLayout(thisLayout);
            setDefaultCloseOperation(EXIT_ON_CLOSE);

                jLabel1 = new JLabel("Center", SwingConstants.CENTER);
                getContentPane().add(jLabel1);
                jLabel1.setPreferredSize(new Dimension(320, 250));
                jLabel1.setText(string1);
                jLabel1.setBorder(BorderFactory.createLineBorder(Color.BLACK));

                jButton1 = new JButton();
                getContentPane().add(jButton1);
                jButton1.setPreferredSize(new Dimension(100, 50));
                jButton1.setText("Map");

                jButton2 = new JButton();
                getContentPane().add(jButton2);
                jButton2.setPreferredSize(new Dimension(100, 50));
                jButton2.setText("Inventory");

                jText1 = new JTextField();
                getContentPane().add(jText1);
                jText1.setPreferredSize(new Dimension(320, 100));
                jText1.setBorder(BorderFactory.createLineBorder(Color.BLACK));

                jButton3 = new JButton();
                getContentPane().add(jButton3);
                jButton3.setPreferredSize(new Dimension(100, 40));
                jButton3.setText("Submit");
                jButton3.addItemListener(ev -> removeTextWhenClicked(jButton3, ev));

            pack();
            this.setSize(350, 500);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

不要使用addItemListener,而是使用addActionListener

 jButton3.addActionListener(new ActionListener(){  
    public void actionPerformed(ActionEvent e){  
          
        }  
    });  
你可以在

当按钮的状态为 更改,无论是通过用户与按钮交互还是 以编程方式(通过setSelected方法)

当用户与按钮交互时,将调用ActionListeners


不要使用addItemListener,而是使用addActionListener

 jButton3.addActionListener(new ActionListener(){  
    public void actionPerformed(ActionEvent e){  
          
        }  
    });  
你可以在

当按钮的状态为 更改,无论是通过用户与按钮交互还是 以编程方式(通过setSelected方法)

当用户与按钮交互时,将调用ActionListeners


谢谢你的帮助,这非常有效。谢谢你的帮助,这非常有效。