我在JTextField
上遇到问题,每当我输入内容时,我都希望分析输入,如果输入是“ADMIN”,则需要触发密码文本框
问题出在txtUsuario.addActionListener
我现在有以下代码
package FP.Graphics;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Window;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.BoxLayout;
import java.awt.Color;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Component;
import javax.swing.JLabel;
public class MainWindow extends JFrame {
protected static final Window lblPassword = null;
private JPanel contentPane;
private JTextField txtUsuario;
private JTextField textField;
private JTextField TextBox;
private JPasswordField passwordField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow frame = new MainWindow();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainWindow() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBackground(Color.WHITE);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
txtUsuario = new JTextField();
txtUsuario.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Update();
}
public void Update() {
if (txtUsuario.getText().toUpperCase().equals("ADMIN"))//Si el texto digitado pasado a mayuscula es "ADMIN" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().toUpperCase().equals("GESTOR"))//Si el texto digitado pasado a mayuscula es "GESTOR" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().toUpperCase().equals("USUARIO"))//Si el texto digitado pasado a mayuscula es "USUARIO" se ejecutara el siguiente bloque de codigo
{
}
else
{
lblPassword.setVisible(false);
passwordField.setVisible(false);//Se ocultara el textbox de password
}
}
});
txtUsuario.setBounds(300, 196, 86, 20);
contentPane.add(txtUsuario);
txtUsuario.setColumns(10);
passwordField = new JPasswordField();
passwordField.setEnabled(false);
passwordField.setBounds(300, 225, 86, 20);
contentPane.add(passwordField);
passwordField.setVisible(false);
JLabel lblUsuario = new JLabel("Usuario");
lblUsuario.setBounds(209, 199, 46, 14);
contentPane.add(lblUsuario);
JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(209, 228, 66, 14);
contentPane.add(lblPassword);
lblPassword.setVisible(false);
JButton btnLogin = new JButton("Login");
btnLogin.setBounds(426, 195, 79, 23);
contentPane.add(btnLogin);
}
}
我也试过这个没有成功
txtUsuario.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent arg0) {
if (txtUsuario.getText().equals("ADMIN"))//Si el texto digitado pasado a mayuscula es "ADMIN" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().equals("GESTOR"))//Si el texto digitado pasado a mayuscula es "GESTOR" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().equals("USUARIO"))//Si el texto digitado pasado a mayuscula es "USUARIO" se ejecutara el siguiente bloque de codigo
{
}
else
{
lblPassword.setVisible(false);
passwordField.setVisible(false);//Se ocultara el textbox de password
}
}
@Override
public void insertUpdate(DocumentEvent arg0) {
if (txtUsuario.getText().equals("ADMIN"))//Si el texto digitado pasado a mayuscula es "ADMIN" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().equals("GESTOR"))//Si el texto digitado pasado a mayuscula es "GESTOR" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().equals("USUARIO"))//Si el texto digitado pasado a mayuscula es "USUARIO" se ejecutara el siguiente bloque de codigo
{
}
else
{
lblPassword.setVisible(false);
passwordField.setVisible(false);//Se ocultara el textbox de password
}
}
@Override
public void removeUpdate(DocumentEvent arg0) {
if (txtUsuario.getText().equals("ADMIN"))//Si el texto digitado pasado a mayuscula es "ADMIN" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().equals("GESTOR"))//Si el texto digitado pasado a mayuscula es "GESTOR" se ejecutara el siguiente bloque de codigo
{
lblPassword.setVisible(true);
passwordField.setVisible(true);//Se hara visible un textbox de password
}
else if (TextBox.getText().equals("USUARIO") )//Si el texto digitado pasado a mayuscula es "USUARIO" se ejecutara el siguiente bloque de codigo
{
}
else
{
lblPassword.setVisible(false);
passwordField.setVisible(false);//Se ocultara el textbox de password
}
}
});