用JFrame写了个登陆。。如果用户输入用户名正确,就将frame关闭。如果在一个类Class2中检查是否登陆成功,成功后执行后面的方法应该。。Class2应该怎么写。
import java.awt.Color;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Collection;import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginFrame extends JFrame { private static final Logger logger
    = Logger.getLogger(LoginFrame.class);
    private static final long serialVersionUID = 1L;
    private JLabel nameLabel;
    private JTextField name;
    private JLabel passLabel;
    private JTextField pass;
    private boolean runMainFrame=false;//是否成功标志
    private JFrame frame;
        public LoginFrame(String title) {
        super(title);
        this.getContentPane().setLayout(null);
        // 下面两行是取得屏幕的高度和宽度
        double lx = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        double ly = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        this.setLocation(new Point((int) (lx / 2) - 150, (int) (ly / 2) - 200));// 设定窗口出现位置
        this.setSize(340, 200);// 设定窗口大小
    }    public void showWin() {        // 确保窗体有一个好的外观装饰
        // setDefaultLookAndFeelDecorated(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        // 姓名
        nameLabel = new JLabel("姓名 :");
        nameLabel.setBounds(30, 10, 50, 25);
        name = new JTextField();
        name.setBounds(80, 10, 120, 20);
        name.setBorder(BorderFactory.createLineBorder(Color.BLUE));
        name.addKeyListener(new KeyListener() {
            public void keyPressed(KeyEvent e) {
            }            public void keyReleased(KeyEvent e) {
            }            public void keyTyped(KeyEvent e) {
               
            }
        });
        passLabel=new JLabel("密码:");
        pass= new JPasswordField();
        passLabel.setBounds(30, 60, 50, 25);
        pass.setBounds(80, 60, 120, 20);
        pass.setBorder(BorderFactory.createLineBorder(Color.BLUE));
        // 确定按钮
        JButton ok = new JButton("确定");
        ok.setBounds(50, 110, 60, 25);
        ok.addMouseListener(new MouseListener() {
            public void mouseClicked(MouseEvent e) {
               System.out.println("mouseClicked:"+name.getText());
           if(name.getText().equals("admin")){
                         setRunMainFrame(true);
                         //System.exit(0);
                         //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                         return;
                         }
            
            }            public void mouseEntered(MouseEvent e) {
            }            public void mouseExited(MouseEvent e) {
            }            public void mousePressed(MouseEvent e) {
            }            public void mouseReleased(MouseEvent e) {
            }
        });        // 取消按钮
        JButton cancel = new JButton("取消");
        cancel.setBounds(120, 110, 60, 25);
        cancel.addMouseListener(new MouseListener() {
            public void mouseClicked(MouseEvent e) {
                name.setText("");
                pass.setText("");
            }            public void mouseEntered(MouseEvent e) {
            }            public void mouseExited(MouseEvent e) {
            }            public void mousePressed(MouseEvent e) {
            }            public void mouseReleased(MouseEvent e) {
            }
        });        
        
        this.getContentPane().add(nameLabel);
        this.getContentPane().add(name);
        this.getContentPane().add(passLabel);
        this.getContentPane().add(pass);
        this.getContentPane().add(ok);
        this.getContentPane().add(cancel);
        // this.pack();
        this.setVisible(true);
        
    }    /**
     * @param args
     */
    public static void main(String[] args) {
     LoginFrame reg = new LoginFrame("Login");
        reg.showWin();
    } public boolean isRunMainFrame() {
return runMainFrame;
} public void setRunMainFrame(boolean runMainFrame) {
this.runMainFrame = runMainFrame;
}
    
public void closeFrame(JFrame frame){
frame=this.getFrame();



}
    } 

解决方案 »

  1.   

    在public class LoginFrame extends JFrame {} 加入下面这一段super.addWindowListener(new WindowAdapter() { @Override
    public void windowClosing(WindowEvent arg0) {
    System.exit(0);
    } });
      

  2.   

    你只需要在这里处理一下就可以了。ok.addMouseListener(new MouseListener() {
      
                public void mouseEntered(MouseEvent e) {
                    // HERE
                }
      

  3.   

    Class2中怎么判断LoginFrame 登陆成功呢。
      

  4.   

    你是打算直接退出程序  就syste.out(0)  
    不是直接退出  你就把你的JFrame的可见属性置为false
      

  5.   

    用System.exit()不妥,因为这样整个程序都会结束的!还是将其visible属性设为FALSE。然后设你的主窗体的visible属性为TRUE!
      

  6.   

    设置JFrame可见性:JFrameInstance.setEnabled(false);
      

  7.   

    这个就OK。。System.exit(0);是退出程序的。。
      

  8.   

    当LoginFrame 点登陆后,要到Class2中取验证。如果成功,要将LoginFrame.setEnabled(false);
    同事要将另外一个MainFrame 显示出来。可是在Class2中怎么知道LoginFrame 是否点击登录了呢。。
      

  9.   


    ok.addMouseListener(new MouseListener() {
                public void mouseClicked(MouseEvent e) {
                   System.out.println("mouseClicked:"+name.getText());
                   if(name.getText().equals("admin")){
                                            frame.dispose();
                                            setRunMainFrame(true);
                                            return;
                                        }
                    
                }
    protected void setRunMainFrame(boolean b){
        MainFrame mainFrame = new MainFrame();
        mainFrame.setVisible(b);
    }
      

  10.   

    你在登入类里加一个Boolean类型的值判断,初始值设置为false。在判断登入名和密码正确后,值改为true,然后再转跳。
      

  11.   

    调用displose()这个方法就可以了,用System.exit(1)是退出整个程序的
      

  12.   

    在LoginFrame中添加一个Class2类对象作为成员变量,用户点击确定时,获取用户所填写的信息,调用Class2中的相关方法进行判断,如果登录成功,返回true,此时根据需要因此或关闭登录窗体即可
      

  13.   

    提示:你把你的登陆窗口的可见性设置为false
      

  14.   

    直接就是dispose(),就可以啦