用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();
}
}
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();
}
}
public void windowClosing(WindowEvent arg0) {
System.exit(0);
} });
public void mouseEntered(MouseEvent e) {
// HERE
}
不是直接退出 你就把你的JFrame的可见属性置为false
同事要将另外一个MainFrame 显示出来。可是在Class2中怎么知道LoginFrame 是否点击登录了呢。。
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);
}