jpanel.add(component)在actionListener内部时不起作用

问题描述 投票:0回答:1

我目前仍在学习名为swing的咒语,所以我编写了此代码

    lblWarning = new JLabel("<html>Incorrect Username or Password<br/>   please try again!</html>");
        lblWarning.setBounds(10,121,220,48);
        lblWarning.setForeground(new Color(150, 0, 0));
        lblWarning.setBackground(new Color(255, 255, 255));
        lblWarning.setFont(new Font("Tahoma", Font.BOLD, 12));



        JButton btnNewButton_1 = new JButton("Confirm");
        btnNewButton_1.setFont(new Font("Microsoft JhengHei", Font.BOLD, 14));
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                if(txtUsername.getText()!="user" && txtPassword.getText()!="pass") {
                    contentPane.add(lblWarning);
                }else {

                }
            }
        });
        btnNewButton_1.setBounds(10, 180, 94, 23);
        contentPane.add(btnNewButton_1);

txtusername和txtpassword是文本字段btw。但是问题是当条件为真时,contentPane(jpanel)不会添加标签“ lblWarning”,但是可以正常工作,并且在actionListener外部时可以正常显示,这是什么问题?

java swing jpanel jlabel
1个回答
1
投票
  1. 你怎么知道你的“如果条件”是真的?您是否通过添加System.out.println(...)语句来验证您是否正在执行该语句中的代码来进行基本调试?

  2. 请勿使用“ ==”或“!=”来比较字符串。而是使用String.equals(...)方法。

  3. 将组件添加到可见框架后,还需要调用panel.revalidate()来调用布局管理器,以便为组件指定大小/位置。

© www.soinside.com 2019 - 2024. All rights reserved.