为了大家了解我的问题,我创建了一个简单的GUI程序来显示我的问题。我会先把你的代码分析一下。然后,请观看下面的视频,看看我有什么意思要问。请耐心等待,视频只需几秒钟,而且不会花费时间加载。我怎样才能防止我的JFrame窗口倍增?
菜单的JFrame:
//This is a Menu JFrame Window
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Menu extends JFrame implements GlobalVariables{
public Menu(){
clickMe.setBounds(75, 50, 100, 50);
clickMe.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
dispose();
SubMenu sm = new SubMenu();
sm.subMenuProperties();
}
});
add(clickMe);
}
void menuProperties(){
setLayout(null);
setSize(250,175);
setVisible(true);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
Menu m = new Menu();
m.menuProperties();
}
}
子菜单的JFrame:
//This is a SubMenu JFrame Window
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class SubMenu extends JFrame implements GlobalVariables{
public SubMenu(){
clickMe2.setBounds(75, 50, 100, 50);
clickMe2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
dispose();
Menu m = new Menu();
m.menuProperties();
}
});
add(clickMe2);
}
void subMenuProperties(){
setLayout(null);
setSize(250,175);
setVisible(true);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SubMenu sm = new SubMenu();
sm.subMenuProperties();
}
}
如果your're想知道什么是 “GlobalVariables” 的实施,那就是:
import javax.swing.*;
public interface GlobalVariables{
//Menu Variable
JButton clickMe = new JButton("SubMenu");
//SubMenu Variable
JButton clickMe2 = new JButton("Back");
}
现在,本视频将向您展示我在JFrame中相乘的意思:
http://www.youtube.com/watch?v=iCavg_1SqvY
*如果你看了视频,你可以看到我的意思是当我说JFrame正在倍增。我一直在分析这几天,但我无法识别我的错误。如果你能指出我的错误,我会感激不尽。我也愿意在代码中进行评论和调整,我只是希望代码的结构不会被重新构造,因为正如我前面所说的,我已经创建了这个简单的GUI来显示我的问题,但至少告诉你,我有一个完整的程序等待在GUI制作中使用这种方法完成。请帮帮我。
请参阅[使用多个JFrames,好/坏实践?](http://stackoverflow.com/a/9554657/418556) – 2013-02-12 11:47:31
谢谢Mr. @AndrewThompson!有你的帮助想法! *如果有任何更多的想法,我仍然对他们开放... – 2013-02-12 12:01:33
问题是你继续添加actionlistener对象的按钮,所以它堆栈,导致多个执行代码'actionPerformed ' – Bnrdo 2013-02-14 07:46:29