为什么会产生两个窗体?
package lucky;
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Main extends JFrame {
/*
* 判断当前是否有用户登陆,如果没有用户登陆的话,则菜单栏除了登陆一项其余都是灰选,即Visible置为false;
* 还有就是修改用户应该给ReUser();传一个当前用户名的值,即只能修改当前登陆的用户的信息
*
*/
private MenuBar menu = new MenuBar();
private String usestr;
Main(){}
Main(String userxx) {
JFrame f = new JFrame(usexx);
f.setSize(600, 400);
f.setLocation(200, 100);
f.setResizable(false);
f.setLayout(new BorderLayout());
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void Closing(WindowEvent e) {
System.exit(0);
}
});
CrearMenu();
f.setMenuBar(menu);
}
public void CrearMenu() {
Menu filem = new Menu( "用户管理 ");
Menu editm = new Menu( "学生管理 ");
Menu toolm = new Menu( "成绩管理 ");
Menu helpm = new Menu( "帮助 ");
Menu exitm = new Menu( "退出 ");
MenuItem filem1 = new MenuItem( "登陆 ");
MenuItem filem2 = new MenuItem( "注册用户 ");
MenuItem fielm3 = new MenuItem( "修改用户 ");
MenuItem fielm4 = new MenuItem( "切换用户 ");
MenuItem editm1 = new MenuItem( "查询学生信息 ");
MenuItem editm2 = new MenuItem( "修改学生信息 ");
MenuItem editm3 = new MenuItem( "删除学生信息 ");
MenuItem editm4 = new MenuItem( "添加学生信息 ");
MenuItem toolm1 = new MenuItem( "查询成绩 ");
MenuItem toolm2 = new MenuItem( "修改成绩 ");
MenuItem toolm3 = new MenuItem( "删除成绩 ");
MenuItem toolm4 = new MenuItem( "添加成绩 ");
MenuItem helpm1 = new MenuItem( "关于程序 ");
MenuItem helpm2 = new MenuItem( "关于作者 ");
MenuItem exitm1 = new MenuItem( "退出 ");
menu.add(filem);
menu.add(editm);
menu.add(toolm);
menu.add(helpm);
menu.add(exitm);
MenuListener m1 = new MenuListener(); // 菜单栏的事件监听
filem.add(filem1);
filem.add(filem2);
filem.add(fielm3);
filem.add(fielm4);
filem1.addActionListener(m1);
filem2.addActionListener(m1);
fielm3.addActionListener(m1);
editm.add(editm1);
editm.add(editm2);
editm.add(editm3);
editm.add(editm4);
editm1.addActionListener(m1);
editm2.addActionListener(m1);
editm3.addActionListener(m1);
editm4.addActionListener(m1);
toolm.add(toolm1);
toolm.add(toolm2);
toolm.add(toolm3);
toolm.add(toolm4);
toolm1.addActionListener(m1);
toolm2.addActionListener(m1);
toolm3.addActionListener(m1);
toolm4.addActionListener(m1);
helpm.add(helpm1);
helpm.add(helpm2);
helpm1.addActionListener(m1);
helpm2.addActionListener(m1);
exitm.add(exitm1);
exitm1.addActionListener(m1);
}
public void OnScreen() {
Dimension meSize = getToolkit().getScreenSize();
Dimension windowSize = getSize();
int x, y;
x = (meSize.width - windowSize.width) / 2;
y = (meSize.height - windowSize.height) / 2;
if (x < 0) {
x = 0;
}
if (y < 0) {
y = 0;
}
setLocation(x, y);
}
class MenuListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals( "登陆 ")) {
JFrame f = new Login();
f.show();
dispose();
}
if (e.getActionCommand().equals( "注册用户 ")) {
JFrame b = new Register();
b.show();
dispose();
}
if (e.getActionCommand().equals( "修改用户 ")) {
System.out.println( "runing now ");
JFrame f = new ReUser();
f.show();
dispose();
}
if (e.getActionCommand().equals( "切换用户 ")) {
System.exit(0);
}
if (e.getActionCommand().equals( "查询学生信息 ")) {
new findStu();
}
if (e.getActionCommand().equals( "修改学生信息 ")) {
}
if (e.getActionCommand().equals( "删除学生信息 ")) {
}
if (e.getActionCommand().equals( "添加学生信息 ")) {
}
if (e.getActionCommand().equals( "删除学生信息 ")) {
}
if (e.getActionCommand().equals( "删除学生信息 ")) {
}
if (e.getActionCommand().equals( "删除学生信息 ")) {
}
if (e.getActionCommand().equals( "关于程序 ")) {
JFrame f = new Help();
f.show();
}
if (e.getActionCommand().equals( "关于作者 ")) {
JFrame f = new useHelp();
f.show();
}
if (e.getActionCommand().equals( "退出 ")) {
System.exit(1);
}
else{
return;
}
}
}
public static void main(String args[]) {
JFrame f = new Main();
f.show();
}
}
为什么在运行的时候会产生两个窗体呢?
一个什么也没有,一个是我想生成的Main 这个窗体,实在找不到那还产生了一个事例,谢谢啦...
[解决办法]
构造函数本身是自动执行的,
public static void main(String args[]) 也是自动执行的,你在main中创建实例f,等于又重新构造了,这样Main执行了两次