现在有一登陆框 JFrame , 我输入用户名,点确认后,就会弹出一新的窗口,这个窗口有个JTextField 和 发送按钮,下面是JTextArea 显示信息的。
我想问这个新的窗口 是怎么实现的,是一个新的JFrame 还是弹出一个FileDialog 。

解决方案 »

  1.   

    import java.awt.Color; 
    import java.awt.Dimension; 
    import java.awt.Toolkit; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; import javax.swing.JButton; 
    import javax.swing.JDialog; 
    import javax.swing.JLabel; 
    import javax.swing.JOptionPane; 
    import javax.swing.JPasswordField; 
    import javax.swing.JTextField; /** 

    * @author capuchin 
    * @date 2008-1-6 15:05:02 
    */ 
    public class Login extends JDialog { private static final long serialVersionUID = 1L; private JLabel l_Id = new JLabel("登陆账户", JLabel.CENTER); 
    private JLabel l_pw = new JLabel("登陆密码", JLabel.CENTER); 
    private JTextField t_Id = new JTextField(10); 
    private JPasswordField t_pw = new JPasswordField(10); 
    private JButton btnLogin; 
    private JButton btnClose; public Login() { 
    super(); 
    setResizable(false); 
    getContentPane().setBackground(new Color(225, 225, 225)); 
    getContentPane().setLayout(null); 
    initialize(); 
    } protected void initialize() { 
    setTitle("系统登录"); l_Id.setBounds(48, 43, 53, 25); 
    t_Id.setBounds(110, 43, 150, 25); 
    l_pw.setBounds(48, 93, 53, 25); 
    t_pw.setBounds(110, 93, 150, 25); getContentPane().add(l_Id); 
    getContentPane().add(l_pw); 
    getContentPane().add(t_Id); 
    getContentPane().add(t_pw); btnLogin = new JButton(); btnLogin.setText("登 录"); 
    btnLogin.setBounds(70, 142, 85, 28); 
    btnLogin.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    addBtnLoginActionListener(); 

    }); getContentPane().add(btnLogin); btnClose = new JButton(); btnClose.setText("关 闭"); 
    btnClose.setBounds(175, 142, 85, 28); 
    btnClose.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    dispose(); 
    System.exit(-1); 

    }); 
    getContentPane().add(btnClose); 
    } private void addBtnLoginActionListener() { 
    String user = t_Id.getText(); 
    String password = new String(t_pw.getPassword()); if (user.equals("")) { 
    JOptionPane.showMessageDialog(this, "帐号不可为空", "Caution", 
    JOptionPane.WARNING_MESSAGE); 
    return; 
    } if (password.equals("")) { 
    JOptionPane.showMessageDialog(this, "密码不可为空", "Caution", 
    JOptionPane.WARNING_MESSAGE); 
    return; 
    } String sql = "select * FROM login WHERE id = '" + user + "' and pw = '" 
    + password + "'"; boolean success = false; // TODO:数据校验 success = executeQuery(sql); if (success) { 
    // TODO: 如果数据校验成功 显示主界面 并关闭登录界面 JOptionPane.showMessageDialog(this, "成功登录", "提示", 
    JOptionPane.INFORMATION_MESSAGE); 
    this.dispose(); 
    } else { 
    JOptionPane.showMessageDialog(this, "帐号或密码错误!", "警告", 
    JOptionPane.WARNING_MESSAGE); 
    t_pw.requestFocus(); // 密码框选中 
    } } public Dimension getPreferredSize() { 
    return new Dimension(320, 170); 
    } public void show() { 
    Toolkit tk = Toolkit.getDefaultToolkit(); 
    Dimension screen = tk.getScreenSize(); 
    Dimension d = getSize(); 
    this.setLocation((screen.width - d.width) / 2, 
    (screen.height - d.height) / 2); // 输入密码后回车相当于点击了登录按钮 
    getRootPane().setDefaultButton(btnLogin); 
    t_pw.requestFocus(); 
    setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
    setSize(300, 220); 
    super.show(); 
    } public static void main(String[] args) { 
    Login loginFrame = new Login(); 
    loginFrame.setVisible(true); 

    } 弹出一个消息框很好做,要是弹出一个窗口就有点麻烦了。
      

  2.   

    谢谢,
    我想问下 类继承 JDialog 有什么好处 ?
      

  3.   

    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;import com.lxj.homework.Imp.User;
    import com.lxj.homework.Imp.UserImp;
    import com.lxj.homework.dao.UserDao;public class Login {
    private JFrame frame;
    private JLabel userLabel,pswLabel,showLabel;
    private JTextField userField;
    private JPasswordField pswField;
    private JButton ok,cancel;
    private UserDao dao;

    public Login(UserDao dao){
    this.dao=dao;
    frame=new JFrame("登录");
    userLabel=new JLabel("用户名:");
    pswLabel=new JLabel("密码   :");
    showLabel=new JLabel("请输入正确的用户名和密码:");
    userField=new JTextField(20);
    pswField=new JPasswordField(20);
    ok=new JButton("登录");
    cancel=new JButton("取消");
    }
    private void init(){
    JPanel p1=new JPanel();
    p1.setLayout(new FlowLayout());
    p1.add(userLabel);
    p1.add(userField);
    p1.add(pswLabel);
    p1.add(pswField);
    JPanel p2=new JPanel();
    p2.setLayout(new FlowLayout());
    p2.add(ok);
    p2.add(cancel);

    frame.add(showLabel,new BorderLayout().NORTH);
    frame.add(p1,new BorderLayout().CENTER);
    frame.add(p2,new BorderLayout().SOUTH);

    }
    private void addHandleEvent(){
    ok.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    User user=dao.getUser(userField.getText(),pswField.getPassword().toString());
    if(user!=null){
    new BankManager().showMe();//这个类是一个新的JFrame类,可以这样调用
    frame.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);
    }else{
    JOptionPane.showMessageDialog(frame,"帐户或密码有错误!");
    }
    }
    });
    cancel.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    System.exit(0);
    }
    });
    }
    public void showMe(){
    init();
    addHandleEvent();
    frame.setVisible(true);
    frame.setSize(300,150);
    frame.setLocation(400, 300);
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
    UserDao dao=new UserImp();
    new Login(dao).showMe(); }}
    LZ看看这个是弹出一个新的JFrame窗口
      

  4.   

    你这个包 
    import com.lxj.homework.Imp.User;
    import com.lxj.homework.Imp.UserImp;
    import com.lxj.homework.dao.UserDao;
    很明显我没有