java 浅谈JOptionPane

来源:互联网 发布:网络帅哥红人资源 编辑:程序博客网 时间:2024/06/06 11:38


//也可利用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;    }}