2017-08-27 10 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); 
    } 
} 

プログラムは、基本的には、ログイン/レジスタの事です。私はユーザー名とパスワードを別々に格納する2つの配列を作った。ユーザーが登録した後、私は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); 
    } 
} 
関連する問題