java 浅谈JOptionPane
//也可利用JOptionPane的构造方法自定义对话框,
//如:自己做一个输入密码的对话框
final JPasswordField field=new JPasswordField(); field.setEchoChar('*'); field.requestFocusInWindow(); Object[] message = { "请输入当前用户密码:", field}; JOptionPane pane = new JOptionPane(message, JOptionPane.INFORMATION_MESSAGE){ private static final long serialVersionUID = 4268134471531397292L; public void paint(Graphics g) { super.paint(g); //设置光标位置,不能直接在实例化文本框对象后就直接调用requestFocus(),需要组件类重载paint方法,passwordinput是一个文本框对象,因为swing的图像显示的原理是执行了setVisible方法之后默认隐士执行paint方法,只有在paint方法之后设置光标位置才可以起作用,在paint或者setVisible之前设置之前还没有画出图形所以requestFocus()方法,在setVisible方法之前使用时不起作用的,需要重载paint方法就可以了 field.requestFocusInWindow(); } }; JDialog dialog = pane.createDialog(null, "输入"); dialog.setVisible(true); String inputValue=field.getText();
//下面是判断输入的密码是否正确…….
上面程序的错误:其对话框按钮不能自定义
改进:利用JOptionPane的showOptionDialog方法来自定义窗口
public class RegisterDialog{ private final JPasswordField field=new JPasswordField (); private int option=-1; public RegisterDialog(Component parentComponent){ //弹出注册对话框 field.setEchoChar('*'); field.requestFocusInWindow(); Object[] options = { "注册", "取消"}; Object[] message = { "请输入注册码:", field}; option=JOptionPane.showOptionDialog(parentComponent,message,"注册码输入窗口",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[0]); public int GetOption(){ return option; } public String getInputCode(){ String inputValue=field.getText().trim(); return inputValue; } }
posted on 2012-07-20 15:13 java课程设计例子 阅读(337) 评论(0) 编辑 收藏 举报