在 JButton 中执行 ActionEvent 需要双击

我使用 JFrame 创建了一个简单的登录框架。我有硬编码验证,其中如果用户输入用户名作为AKASH和密码作为12345然后登录成功显示在按钮下方,否则显示错误密码。


一切正常。唯一的事情是:


输入详细信息后,我必须双击才能看到结果


任何人都可以帮我解决这个问题。


这是我的代码:


import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


public class LginForm extends JFrame implements ActionListener{


    Container c;

    JTextField jt;

    JButton jb;

    JPasswordField jp;

    JLabel jl1,jl2;

    JLabel jl3 = new JLabel("Wrong Password");

    JLabel jl4 = new JLabel("Login Successful");



    public static void main(String[] args) {


        LginForm lf = new LginForm();

        lf.setBounds(100, 50, 500, 400);

        lf.setVisible(true);

        lf.setDefaultCloseOperation(EXIT_ON_CLOSE);



    }


    public LginForm() {


        c = this.getContentPane();

        c.setBackground(Color.yellow);

        c.setLayout(null);


        jl1 = new JLabel("Enter Username");

        jl1.setBounds(50, 10, 100, 30);

        jl1.setFont(new Font(Font.SANS_SERIF, Font.ITALIC, 12));



        jl2 = new JLabel("Enter Password");

        jl2.setBounds(50, 100, 100, 30);

        jl2.setFont(new Font(Font.SANS_SERIF, Font.ITALIC, 12));



        jt = new JTextField();

        jt.setBounds(200,10,100,30);



        jp = new JPasswordField();

        jp.setBounds(200,100,100,30);



        jb = new JButton("login");

        jb.setBounds(130,180,80,30);

        c.add(jl1);

        c.add(jl2);

        c.add(jt);

        c.add(jp);

        c.add(jb);

        jb.addActionListener(this);




    }


    @Override

    public void actionPerformed(ActionEvent event) {



        if(event.getSource() == jb) {

            String usrname = jt.getText();

            String passwrd = String.valueOf(jp.getPassword());

            if(usrname.equals("Akash") && passwrd.equals("12345")) {

                jl4.setBounds(100, 230, 150, 40);

                jl4.setFont(new Font(Font.SANS_SERIF, Font.ITALIC, 12));

                c.add(jl4);

                c.remove(jl3);

            }


不负相思意
浏览 154回答 1
1回答

慕码人2483693

c.add(jl4);c.remove(jl3);我猜想在从面板添加/删除组件后,您需要调用repaint()面板。这只是一个猜测,因为您不应该使用空布局。Swing 旨在与布局管理器一起使用。让布局管理器根据布局管理器的规则确定组件的大小/位置。然后,当您从面板中添加/删除组件时,基本逻辑将是:panel.remove(...);panel.add(...);panel.revalidate();panel.repaint();阅读有关使用布局管理器的 Swing 教程以获取更多信息。笔记:我还建议一个更简单的解决方案是将“消息标签”添加到面板,并将文本设置为“”。然后你可以简单地使用setText(...)标签的方法来改变消息。这样您甚至无需担心添加/删除组件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java