swing初始化一个JFrame实现点击A界面的一个按钮,显示B界面,无论点击多少次,都只显示一个B界面。
A界面:
public class Demo extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Demo frame = new Demo();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Demo() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu menu = new JMenu("\u529F\u80FD\u9009\u62E9");
menuBar.add(menu);
//按钮的事件:就是调用本界面Demo的getInstance()方法
JMenuItem menuItem = new JMenuItem("\u767B\u5F55");
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Demo.getInstance();
}
});
menu.add(menuItem);
JMenuItem menuItem_1 = new JMenuItem("\u6CE8\u518C");
menu.add(menuItem_1);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
}
//通过静态方法设置只显示一个Load界面
public static Load instance = null;
public static Load getInstance(){
if(instance == null){
instance = new Load();
instance.setVisible(true);
}
return instance;
}
}
主要的代码就是添加了:
//通过静态方法设置只显示一个Load界面
public static Load instance = null;
public static Load getInstance(){
if(instance == null){
instance = new Load();
instance.setVisible(true);
}
return instance;
}
点击登录按钮要打开的界面就是Load界面,设置一个静态方法,当Load界面为空,就新建一个Load界面的对象,不为空就不做任何的操作。这样就可以解决无数次点击按钮,只产生一个Load界面。