if 语句在操作侦听器中使用时不起作用



我对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 randomn");
                }
            }
        });
        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">

时看到"随机的东西"出现在"calc"下方。到目前为止,我没有收到任何if语句

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

所以与其写text == "q" text.equals("q");

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

if(text.equals("q")) {
      ta.append("something randomn");
}

最新更新