2017-08-27 2 views
1

Je me demandais si je pouvais créer un JLabel qui pourrait être fermé. Voici mon code:Java Label qui peut être fermé

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

Le programme est essentiellement une connexion/chose vous inscrire. J'ai fait deux tableaux qui stockent le nom d'utilisateur et le mot de passe séparément. Après l'inscription de l'utilisateur, j'ai fait un Jlabel pour dire merci pour l'enregistrement, mais je veux qu'il puisse être fermé par l'utilisateur. À l'heure actuelle, je dois définir la visibilité des messages sur false, mais existe-t-il un autre moyen?

+2

Une autre manière comme peut-être une boîte de dialogue? Consultez [JOptionPane] (https://docs.oracle.com/javase/8/docs/api/javax/swing/JOptionPane.html), en particulier [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-) et amis. –

Répondre

0

Oui, il y a un autre moyen. Au lieu d'utiliser une étiquette, vous pouvez utiliser un JButton qui a été formaté pour ressembler à une étiquette. Sauf que lorsque vous cliquez dessus, le texte disparaît. Vous ajoutez un écouteur d'action pour supprimer le texte lorsque vous cliquez sur le bouton. Essayez le code ci-dessous. Le code nouveau et modifié est marqué avec des commentaires à cet effet.

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