gpt4 book ai didi

java - JButton 未添加带有 ActionListener 的 JLabel

转载 作者:行者123 更新时间:2023-12-01 11:20:45 25 4
gpt4 key购买 nike

我已经开始对我已经工作了几个月的项目进行扩展,并且我觉得有必要将其从控制台中取出并放入 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"))

您的代码还有其他问题:

  • 使用绝对坐标而不是使用 layout manager
  • 动态地将元素添加到框架中,而不是从一开始就添加它们,并在需要时简单地使它们可见。需要添加,但随后需要重新验证 GUI。

关于java - JButton 未添加带有 ActionListener 的 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31252509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com