2017-08-27 50 views
1

我想知道是否可以創建可以關閉的JLabel。 這是我的代碼:可以關閉的Java標籤

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); 
    } 
} 

程序基本上是一個登錄/註冊的事情。我做了兩個單獨存儲用戶名和密碼的數組。用戶註冊後,我讓Jlabel說謝謝你註冊,但我希望它能被用戶關閉。 現在我需要將消息的可見性設置爲false,但是還有其他方法嗎?

+2

另一種方式,如可能是一個對話框?查看[JOptionPane](https://docs.oracle.com/javase/8/docs/api/javax/swing/JOptionPane.html),特別是[showMessageDialog](https://docs.oracle.com/javase) /8/docs/api/javax/swing/JOptionPane.html#showOptionDialog-java.awt.Component-java.lang.Object-java.lang.String-int-int-javax.swing.Icon-java.lang.Object :A-java.lang.Object-)和朋友。 –

回答

0

是的,還有另外一種方法。您可以使用已格式化爲標籤的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); 
    } 
}