2017-08-27 2 views
1

Ich fragte mich, ob ich ein JLabel erstellen könnte, das geschlossen werden könnte. Dies ist mein Code:Java Label, das geschlossen werden kann

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

Das Programm ist im Grunde eine Anmeldung/Registrierung Sache. Ich habe zwei Arrays erstellt, die den Benutzernamen und das Passwort getrennt speichern. Nachdem der Benutzer sich registriert hat, habe ich ein Jlabel gemacht, um mich für die Registrierung zu bedanken, aber ich möchte, dass es vom Benutzer geschlossen werden kann. Im Moment muss ich die Sichtbarkeit von Nachrichten auf falsch setzen, aber gibt es einen anderen Weg?

+2

Ein anderer Weg wie vielleicht ein Dialogfeld? Überprüfen Sie [JOptionPane] (https://docs.oracle.com/javase/8/docs/api/javax/swing/JOptionPane.html), insbesondere [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-) und Freunde. –

Antwort

0

Ja, es gibt einen anderen Weg. Anstatt eine Beschriftung zu verwenden, können Sie eine JButton verwenden, die so formatiert wurde, dass sie wie eine Beschriftung aussieht. Nur, wenn Sie darauf klicken, verschwindet der Text. Sie fügen einen Aktionslistener hinzu, um den Text zu entfernen, wenn auf die Schaltfläche geklickt wird. Probieren Sie den folgenden Code aus. Der neue und geänderte Code ist mit entsprechenden Kommentaren versehen.

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