如果在动作监听器中使用if语句不起作用

时间:2019-05-31 20:10:34

标签: java swing actionlistener

我对Java很陌生,一直在研究GUI的工作方式。通过一些教程,我设法将一个程序组合在一起以使用文本框,并希望将我作为第一个项目制作的计算器纳入其中。我关注的区域是按钮和动作侦听器,在其中键入“ calc”时我会尝试获得额外的响应。

我尝试在程序外部初始化额外的响应,但是由于在内部调用了字符串,因此无法正常工作。我也尝试过在外部调用该字符串,但这仍然行不通。我有一个想法,做任何超出此要求的事情都需要单独调用函数,但是我希望首先从找出这小部分开始。

    static JTextField tf;
    static JFrame frame;
    static JPanel panel;
    static JTextArea ta;
    int count;
    int num1;
    int num2;
    int exp;
    char operator;
    double answer;

    static void GUI() {
        frame = new JFrame("Thank you for reading this");
        panel = new JPanel();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,400);
        JButton button = new JButton("Test");
        tf = new JTextField(15);
        panel.add(tf);
        panel.add(button);

        JTextArea ta = new JTextArea();
        ta.setEditable(false);

        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                String text = tf.getText();
                ta.append(text+"\n");
                if(text == "q") {
                    ta.append("something random\n");
                }
            }
        });

        frame.getContentPane().add(BorderLayout.CENTER, ta);
        frame.getContentPane().add(BorderLayout.SOUTH, panel);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        GUI();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    }

}

当在文本字段中键入“ calc”时,我希望看到“随机”。到目前为止,如果使用if语句,我什么也没收到

2 个答案:

答案 0 :(得分:1)

首先,==运算符匹配referenceStrings中的Objects而不是实际值。 String不是primitive数据类型,因此您可以使用==比较其值。您需要为此调用equals()方法:

if(text.equals("q")) {
      ta.append("something random\n");
}

答案 1 :(得分:1)

在比较对象的值相等性时,请使用equals而不是==,因为==正在检查引用相等性。

因此,不用text == "q"来写text.equals("q")