Java 如何使用按钮获得实时JFrame更新

Java 如何使用按钮获得实时JFrame更新,java,swing,user-interface,Java,Swing,User Interface,对于我的JavaGUI程序,我有一个问题,请看这里 今天我已经在这个项目上工作了几个小时,我已经完成了整个“登录”窗口的设置,但是有一件事似乎对我不起作用。我在“登录”表单下面有一个标签,如果我用不同的字符串值获取了错误的密码或用户名,它不会更新。代码如下: package main; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JButton; import java.awt.Bord

对于我的JavaGUI程序,我有一个问题,请看这里

今天我已经在这个项目上工作了几个小时,我已经完成了整个“登录”窗口的设置,但是有一件事似乎对我不起作用。我在“登录”表单下面有一个标签,如果我用不同的字符串值获取了错误的密码或用户名,它不会更新。代码如下:

package main;

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;
import javax.swing.JFormattedTextField;
import javax.swing.SwingConstants;

import java.awt.Window.Type;

import javax.swing.JPasswordField;


public class Login {

private JFrame frmConsoleappReborn;
private JTextField textField_1;
private JPasswordField passwordField;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Login window = new Login();
                window.frmConsoleappReborn.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Login() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frmConsoleappReborn = new JFrame();
    frmConsoleappReborn.setType(Type.UTILITY);
    frmConsoleappReborn.getContentPane().setBackground(new Color(0, 0, 0));
    frmConsoleappReborn.setTitle("ConsoleApp Reborn");
    frmConsoleappReborn.setBackground(new Color(0, 0, 255));
    frmConsoleappReborn.getContentPane().setForeground(Color.GREEN);
    frmConsoleappReborn.setBounds(100, 100, 565, 369);
    frmConsoleappReborn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frmConsoleappReborn.getContentPane().setLayout(null);



    JLabel lblWelcomeToMy = new JLabel("Welcome to my amazing program!");
    lblWelcomeToMy.setForeground(new Color(255, 0, 0));
    lblWelcomeToMy.setBounds(174, 11, 242, 14);
    frmConsoleappReborn.getContentPane().add(lblWelcomeToMy);

    JLabel lblUserName = new JLabel("User name");
    lblUserName.setForeground(new Color(255, 0, 0));
    lblUserName.setBackground(new Color(255, 255, 255));
    lblUserName.setBounds(158, 70, 67, 25);
    frmConsoleappReborn.getContentPane().add(lblUserName);

    textField_1 = new JTextField();
    textField_1.setForeground(new Color(0, 0, 0));
    textField_1.setBackground(new Color(255, 0, 0));
    textField_1.setColumns(10);
    textField_1.setBounds(235, 72, 118, 20);
    frmConsoleappReborn.getContentPane().add(textField_1);

    JLabel lblPassword = new JLabel("Password");
    lblPassword.setForeground(new Color(255, 0, 0));
    lblPassword.setBounds(158, 146, 76, 14);
    frmConsoleappReborn.getContentPane().add(lblPassword);

    passwordField = new JPasswordField();
    passwordField.setBackground(Color.RED);
    passwordField.setBounds(235, 143, 118, 20);
    frmConsoleappReborn.getContentPane().add(passwordField);

    JLabel loginStatus = new JLabel("Your login status will show up here.");
    loginStatus.setForeground(Color.WHITE);
    loginStatus.setBounds(184, 195, 219, 14);
    frmConsoleappReborn.getContentPane().add(loginStatus);

    JButton btnLogin = new JButton("Login");
    btnLogin.setBounds(151, 228, 256, 61);
    frmConsoleappReborn.getContentPane().add(btnLogin);
    btnLogin.addActionListener(new ActionListener() {

        @SuppressWarnings("deprecation")
        public void actionPerformed(ActionEvent arg0) {
        if(textField_1.getText().equals("Admin"))
        {
            if(passwordField.getText().equals("Admin"))
            {
            loginStatus.setText("Login successful!");
            } else {
                loginStatus.setText("Login failed. Please check password.");
            }
        } else {
            loginStatus.setText("Login failed. Please check username");
        }
        }
    });

}
}
祝你一切顺利


Groax

请删除所有无关代码。我知道我,可能还有很多其他人,不想通读一百行代码来找出其中的五行。“当我输入错误的密码时,它不会更新,”你是在暗示当你输入正确的密码时,它会更新标签吗?您收到的是“登录成功”消息,而不是“登录失败”消息?还有Jashaszun说的话;请至少编辑掉导入内容(如果不是更多的话)。避免使用
null
布局,像素完美的布局在现代ui设计中是一种错觉。影响零部件单个尺寸的因素太多,您无法控制。Swing的设计宗旨是与核心的布局管理器一起工作,丢弃这些布局管理器将导致无止境的问题,您将花费越来越多的时间试图纠正这些问题,并且您的程序对meThanks@MadProgrammer运行良好我不知道以前的问题是什么,因为它在大约5-10分钟前才开始对我起作用。