可以关闭的Java标签

可以关闭的Java标签,java,user-interface,jlabel,Java,User Interface,Jlabel,我想知道是否可以创建一个可以关闭的JLabel。 这是我的代码: package Bank; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFram

我想知道是否可以创建一个可以关闭的JLabel。 这是我的代码:

package Bank;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Color;

public class BankLogin {
  String usernameuser;
  String passworduser;
  ArrayList<String> Usernames = new ArrayList<String>();
  ArrayList<String> Passwords = new ArrayList<String>();
  private JFrame frame;
  private JTextField Username;
  private JTextField textField_1;

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

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

/**
 * Initialize the contents of the frame.
 */
  private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 508, 381);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JLabel Messages = new JLabel("New label");
    Messages.setBackground(Color.RED);
    Messages.setFont(new Font("Tahoma", Font.PLAIN, 20));
    Messages.setBounds(99, 132, 383, 75);
    frame.getContentPane().add(Messages);
    Messages.setVisible(false);

    Username = new JTextField();
    Username.setBounds(231, 66, 131, 30);
    frame.getContentPane().add(Username);
    Username.setColumns(10);

    textField_1 = new JTextField();
    textField_1.setColumns(10);
    textField_1.setBounds(231, 132, 131, 30);
    frame.getContentPane().add(textField_1);

    JLabel lblUsername = new JLabel("Username");
    lblUsername.setFont(new Font("Tahoma", Font.PLAIN, 20));
    lblUsername.setBounds(109, 66, 112, 36);
    frame.getContentPane().add(lblUsername);

    JLabel lblPassword = new JLabel("Password");
    lblPassword.setFont(new Font("Tahoma", Font.PLAIN, 20));
    lblPassword.setBounds(109, 125, 112, 36);
    frame.getContentPane().add(lblPassword);

    JButton btnLogin = new JButton("Login");
    btnLogin.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

        }
    });

    btnLogin.setBounds(109, 240, 89, 23);
    frame.getContentPane().add(btnLogin);

    JButton btnRegister = new JButton("Register");
    btnRegister.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if((lblUsername.getText()).length() != 0 && (lblPassword.getText()).length() != 0){
             Usernames.add(lblUsername.getText());
             Passwords.add(lblPassword.getText());
             Messages.setVisible(true);
             Messages.setText("Thank you for creating an account.");
            // Messages.setVisible(false);
            }
            else{
                 Messages.setVisible(true);
                 Messages.setText("Error");
            }
        }
    });
    btnRegister.setBounds(273, 240, 89, 23);
    frame.getContentPane().add(btnRegister);
  }
}
package银行;
导入java.awt.EventQueue;
导入java.awt.Font;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JTextField;
导入java.awt.Color;
公共类银行登录{
字符串usernameuser;
字符串密码用户;
ArrayList用户名=新的ArrayList();
ArrayList Passwords=新的ArrayList();
私有JFrame;
私有JTextField用户名;
私有JTextField textField_1;
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
BankLogin窗口=新建BankLogin();
window.frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建应用程序。
*/
公共银行登录(){
初始化();
}
/**
*初始化框架的内容。
*/
私有void初始化(){
frame=新的JFrame();
机架立根(100100508381);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel消息=新JLabel(“新标签”);
消息。挫折背景(颜色。红色);
Messages.setFont(新字体(“Tahoma”,Font.PLAIN,20));
消息.挫折(99132383,75);
frame.getContentPane().add(消息);
Messages.setVisible(false);
用户名=新的JTextField();
用户名.setBounds(231,66,131,30);
frame.getContentPane().add(用户名);
Username.setColumns(10);
textField_1=新的JTextField();
textField_1.设置列(10);
textField_1.设置边界(231、132、131、30);
frame.getContentPane().add(textField_1);
JLabel lblUsername=新的JLabel(“用户名”);
setFont(新字体(“Tahoma”,Font.PLAIN,20));
lblUsername.挫折(109,66,112,36);
frame.getContentPane().add(lblUsername);
JLabel lblPassword=新的JLabel(“密码”);
lblPassword.setFont(新字体(“Tahoma”,Font.PLAIN,20));
lblPassword.setBounds(109、125、112、36);
frame.getContentPane().add(lblPassword);
JButton btnLogin=新JButton(“登录”);
btnLogin.addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件arg0){
}
});
btnLogin.立根(109,240,89,23);
frame.getContentPane().add(btnLogin);
JButton btnRegister=新JButton(“寄存器”);
btnRegister.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
if((lblUsername.getText()).length()!=0&(lblPassword.getText()).length()!=0){
添加(lblUsername.getText());
add(lblPassword.getText());
Messages.setVisible(true);
Messages.setText(“感谢您创建帐户”);
//Messages.setVisible(false);
}
否则{
Messages.setVisible(true);
Messages.setText(“错误”);
}
}
});
b登记在案的挫折数(273、240、89、23);
frame.getContentPane().add(btnRegister);
}
}
该程序基本上是一个登录/注册的东西。我制作了两个数组,分别存储用户名和密码。在用户注册之后,我做了一个Jlabel来感谢您的注册,但是我希望它能够被用户关闭。
现在我需要将消息的可视性设置为false,但是还有其他方法吗?

是的,还有其他方法。您可以使用一个JButton来代替标签,该JButton已格式化为看起来像标签一样。但是,当你点击它时,文本消失了。您可以添加一个操作侦听器,以便在单击按钮时删除文本。请尝试下面的代码。新的和修改过的代码都标有注释

package banklogin;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Color;

public class BankLogin {
  String usernameuser;
  String passworduser;
  ArrayList<String> Usernames = new ArrayList<String>();
  ArrayList<String> Passwords = new ArrayList<String>();
  private JFrame frame;
  private JTextField Username;
  private JTextField textField_1;

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

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

/**
 * Initialize the contents of the frame.
 */
  private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 508, 381);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JButton Messages = new JButton("New label");             // new
    Messages.setBorderPainted(false);                        // new
    Messages.setBackground(new Color(240,240,240));          // new
    Messages.setFont(new Font("Tahoma", Font.PLAIN, 18));    // changed
    Messages.setBounds(50, 175, 383, 50);                    // changed
    frame.getContentPane().add(Messages);
    Messages.setVisible(false);

    Username = new JTextField();
    Username.setBounds(231, 66, 131, 30);
    frame.getContentPane().add(Username);
    Username.setColumns(10);

    textField_1 = new JTextField();
    textField_1.setColumns(10);
    textField_1.setBounds(231, 132, 131, 30);
    frame.getContentPane().add(textField_1);

    JLabel lblUsername = new JLabel("Username");
    lblUsername.setFont(new Font("Tahoma", Font.PLAIN, 20));
    lblUsername.setBounds(109, 66, 112, 36);
    frame.getContentPane().add(lblUsername);

    JLabel lblPassword = new JLabel("Password");
    lblPassword.setFont(new Font("Tahoma", Font.PLAIN, 20));
    lblPassword.setBounds(109, 125, 112, 36);
    frame.getContentPane().add(lblPassword);

    JButton btnLogin = new JButton("Login");
    btnLogin.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

        }
    });

    Messages.addActionListener(new ActionListener() {  // new
        public void actionPerformed(ActionEvent e) {   // new
            Messages.setText("");                      // new
        }                                              // new
    });                                                // new

    btnLogin.setBounds(109, 240, 89, 23);
    frame.getContentPane().add(btnLogin);

    JButton btnRegister = new JButton("Register");
    btnRegister.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if((lblUsername.getText()).length() != 0 && (lblPassword.getText()).length() != 0){
             Usernames.add(lblUsername.getText());
             Passwords.add(lblPassword.getText());
             Messages.setVisible(true);
             Messages.setText("Thank you for creating an account.");
            // Messages.setVisible(false);
            }
            else{
                 Messages.setVisible(true);
                 Messages.setText("Error");
            }
        }
    });
    btnRegister.setBounds(273, 240, 89, 23);
    frame.getContentPane().add(btnRegister);
  }
}
package银行登录;
导入java.awt.EventQueue;
导入java.awt.Font;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JTextField;
导入java.awt.Color;
公共类银行登录{
字符串usernameuser;
字符串密码用户;
ArrayList用户名=新的ArrayList();
ArrayList Passwords=新的ArrayList();
私有JFrame;
私有JTextField用户名;
私有JTextField textField_1;
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
BankLogin窗口=新建BankLogin();
window.frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建应用程序。
*/
公共银行登录(){
初始化();
}
/**
*初始化框架的内容。
*/
私有void初始化(){
frame=新的JFrame();
机架立根(100100508381);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JButton Messages=newjbutton(“新标签”);//新
Messages.setboordpainted(false);//新建
Messages.setBackground(新颜色(240240));//新
Messages.setFont(新字体(“Tahoma”,Font.PLAIN,18));//已更改
Messages.setBounds(50175383350);//已更改
frame.getContentPane().add(消息);
Messages.setVisible(false);
用户名=新的JTextField();
用户名.setBounds(231,66,131,30);
frame.getContentPane().add(用户名);
Username.setColumns(10);
textField_1=新的JTextField();
textField_1.设置列(10);
textField_1.设置边界(231、132、131、30);
frame.getCont