Java 当在actionListener中时,jpanel.add(组件)不起作用

Java 当在actionListener中时,jpanel.add(组件)不起作用,java,swing,jpanel,jlabel,Java,Swing,Jpanel,Jlabel,我现在还在学习这个叫做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));

我现在还在学习这个叫做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);

lblWarning=new JLabel(“不正确的用户名或密码
请重试!”); lblWarning.setBounds(10121220,48); 设置前景(新颜色(150,0,0)); lblWarning.setBackground(新颜色(255、255、255)); lblWarning.setFont(新字体(“Tahoma”,Font.BOLD,12)); JButton btnNewButton_1=新JButton(“确认”); btnNewButton_1.setFont(新字体(“Microsoft JhengHei”,Font.BOLD,14)); btnNewButton_1.addActionListener(新ActionListener(){ 已执行的公共无效操作(操作事件arg0){ if(txtUsername.getText()!=“用户”&&txtPassword.getText()!=“通过”){ contentPane.add(lblWarning); }否则{ } } }); btnewbutton_1.收进边界(10,180,94,23); contentPane.add(btnewbutton_1);
txtusername和txtpassword是文本字段。顺便说一句,问题是contentPane(jpanel)在条件为真时不添加标签“lblWarning”,但在actionListener之外工作并显示良好,有什么问题

  • 你怎么知道你的“如果条件”是真的?您是否通过添加
    System.out.println(…)
    语句来执行基本调试,以验证您正在语句中执行代码

  • 不要使用“==”或“!=”来比较字符串。而是使用
    String.equals(…)
    方法

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


  • 按钮BtnewButton_1未添加到任何其他组件。你打算点击它吗?如果你是指这个contentPane.add(btnNewButton_1);然后它就在那里了,我只是忘了粘贴它,因为我没有使用setBounds()。Swing设计用于布局管理器。在提问时发布一个适当的帖子,以便我们更好地理解代码的上下文。对于您的第一个问题,我这样做了`BtnewButton_1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0){contentPane.add(lblWarning);}}}`它仍然不起作用3-如果您的意思是“public void actionPerformed(ActionEvent arg0){contentPane.add(lblWarning);contentPane.revalidate();}}};”它也不起作用。不要在评论中发布代码。代码不可读。更新代码,显示如何实现所有3个建议。并将代码更新为。这是你的演示后,包含框架,你的两个文本字段和按钮,所以我们可以看到你到底在做什么。我们应该能够复制/粘贴/编译和测试代码。