JButton没有添加带有ActionListener的JLabel



我已经开始对一个已经工作了几个月的项目进行扩展,我觉得有必要把它从控制台中取出,放在GUI窗口中。到目前为止一切都很顺利!除了一件事,当我试图测试登录按钮时(这只是为了限制谁使用它,看看我是否能做到。(动作监听器的反应并不像我希望的那样。这是代码:

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import java.awt.Color;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.JLayeredPane;

public class Main {
private JFrame frame;
private JTextField textField;
private JTextField textField_1;
/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Main window = new Main();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
/**
 * Create the application.
 */
public Main() {
    initialize();
}
/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.getContentPane().setForeground(Color.GREEN);
    frame.setBounds(100, 100, 612, 389);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);
    JLabel lblUserName = new JLabel("User name");
    lblUserName.setBackground(Color.YELLOW);
    lblUserName.setBounds(158, 70, 67, 25);
    frame.getContentPane().add(lblUserName);
    JLabel lblPassword = new JLabel("Password");
    lblPassword.setBounds(158, 146, 53, 14);
    frame.getContentPane().add(lblPassword);
    textField = new JTextField();
    textField.setBounds(235, 143, 118, 20);
    frame.getContentPane().add(textField);
    textField.setColumns(10);
    textField_1 = new JTextField();
    textField_1.setColumns(10);
    textField_1.setBounds(235, 72, 118, 20);
    frame.getContentPane().add(textField_1);
    JButton btnLogin = new JButton("Login");
    btnLogin.setBounds(151, 228, 256, 61);
    frame.getContentPane().add(btnLogin);
    btnLogin.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            if(textField.equals("Admin"))
            {
                if(textField.equals("Admin"))
                {
                    JLabel lblLoginSuccessPlease = new JLabel("LOGIN SUCCESS! Please wait while the other functions are loaded");
                    lblLoginSuccessPlease.setBounds(124, 204, 344, 14);
                    frame.getContentPane().add(lblLoginSuccessPlease);
                }
            }
        }
    });      
    JLabel lblWelcomeToMy = new JLabel("Welcome to my amazing program!");
    lblWelcomeToMy.setBounds(174, 11, 242, 14);
    frame.getContentPane().add(lblWelcomeToMy);
    }
}

我试着使用&测试用户名和密码框,结果都不起作用。此外,如果有人能指导我如何让密码框中的字符被屏蔽,那将非常有帮助。

    if(textField.equals("Admin"))
        {
            if(textField.equals("Admin"))
            {
                JLabel lblLoginSuccessPlease = new JLabel("LOGIN SUCCESS! Please wait while the other functions are loaded");
                lblLoginSuccessPlease.setBounds(124, 204, 344, 14);
                frame.getContentPane().add(lblLoginSuccessPlease);
            }
        }

首先,不需要检查textField是否两次等于"Admin"。

但主要的问题是,文本字段(一个在UI中接受输入的白色矩形(永远等于字符串(一个字符序列(。

您要测试的是在文本字段中输入的文本是否等于"Admin":

if (textField.getText().equals("Admin"))

您的代码有其他问题:

  • 使用绝对坐标而不是使用布局管理器
  • 动态地将元素添加到框架中,而不是从一开始就添加它们,并在需要时简单地使它们可见。需要添加,但是GUI需要重新验证
  1. frameMain类中具有私有访问权限

    private JFrame frame;
    

    将其更改为公共或删除修改器

  2. 要获取JTextfield的文本,请使用textfield.getText((

      //if (textField.equals("Admin")) {wrong
            if (textField.getText().equals("Admin")) {//right way
    
  3. 你必须再次检查密码而不是用户名

      if (textField_1.getText().equals("Admin")) {
              f (textField.getText().equals("Admin")) {//this is the password field
    
  4. 要屏蔽密码,你必须使用JPasswordField.so创建类似

    private JPasswordField textField;
    

    并像一样初始化

    textField = new JPasswordField();
    

    像一样检查

    if (textField_1.getText().equals("Admin")) {
                if (String.valueOf(textField.getPassword()).equals("Admin")) {
                    JLabel lblLoginSuccessPlease = new JLabel("LOGIN SUCCESS! Please wait while the other functions are loaded");
                    lblLoginSuccessPlease.setBounds(124, 204, 344, 14);
                    frame.getContentPane().add(lblLoginSuccessPlease);
                }
            }
    

相关内容

  • 没有找到相关文章

最新更新