当前位置: 代码迷 >> J2SE >> swing中监听器的有关问题
  详细解决方案

swing中监听器的有关问题

热度:56   发布时间:2016-04-23 19:38:51.0
swing中监听器的问题

我创建了一个焦点监听器,想要实现在离开文本框时,如果我没有输入任何东西就会提示“请输入昵称”,然后焦点回到文本框时就会自动消失,并且我输入的东西不会被覆盖。
还有密码框我想实现可以显示出来我所输入的文字的功能。
有哪个地方有也可以给个链接,谢谢。
------解决思路----------------------
1、失去焦点时加个判断就是了,如果什么都没输入就设置成“请输入昵称”
2、想显示输入内容,那就不要用密码框,直接用文本框就是了。
------解决思路----------------------
package gui;

import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class LoginTest extends JFrame {
private static final long serialVersionUID = 1L;

/** 界面宽度 */
private static final int DEFAULT_WIDTH = 400;
/** 界面高度 */
private static final int DEFAULT_HEIGHT = 300;

/** 昵称、密码、确认密码标签 */
private JLabel usernameLabel, pwdLabel, confirmPwdLabel;
/** 昵称输入框 */
private JTextField usernameField;
/** 密码输入框 */
private JPasswordField pwdField, confirmPwdField;
/** 主面板 */
private JPanel panel;

public LoginTest() {
// 调用本地风格
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}

panel = new JPanel(null);// 设置面板为空布局

// 昵称
usernameLabel = new JLabel("昵    称:");
panel.add(usernameLabel);
usernameLabel.setBounds(80, 60, 60, 20);// 自定义标签在面板中的位置

usernameField = new JTextField(18);
usernameField.setBounds(150, 60, 160, 20);
panel.add(usernameField);
// 监听昵称输入框的焦点事件
usernameField.addFocusListener(new FocusListener() {
// 失去焦点
@Override
public void focusLost(FocusEvent e) {
// 判断输入框中的内容是否为空,为空表示没有输入任何内容,则手动添加内容
if (usernameField.getText().equals("")) {
usernameField.setText("请输入昵称");// 设置昵称输入框内容
}
}

// 获得焦点
@Override
public void focusGained(FocusEvent e) {
// 判断输入框中的内容是否为空,如果不为空且其内容 “请输入昵称”,则清空输入框
if (usernameField.getText().equals("请输入昵称")) {
usernameField.setText("");// 清空输入框
}
}
});

// 密码
pwdLabel = new JLabel("密    码:");
panel.add(pwdLabel);
pwdLabel.setBounds(80, 100, 60, 20);

pwdField = new JPasswordField(18);
panel.add(pwdField);
pwdField.setBounds(150, 100, 160, 20);
pwdField.setEchoChar('*');// 设置回显字符

// 确认密码
confirmPwdLabel = new JLabel("确认密码:");
panel.add(confirmPwdLabel);
confirmPwdLabel.setBounds(80, 140, 60, 20);

confirmPwdField = new JPasswordField(18);
panel.add(confirmPwdField);
confirmPwdField.setBounds(150, 140, 160, 20);
confirmPwdField.setEchoChar('*');

add(panel);

setTitle("");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
new LoginTest();
}
}