Java 声明JFrame变量的最佳位置
我正在用一系列不同的接口编写一个程序。每个接口都存储在扩展JPanel的单独类中,为了在接口之间交换,我将JFrame的内容窗格设置为所需的JPanelJava 声明JFrame变量的最佳位置,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我正在用一系列不同的接口编写一个程序。每个接口都存储在扩展JPanel的单独类中,为了在接口之间交换,我将JFrame的内容窗格设置为所需的JPanel 所以我的问题是:在哪里最好地声明JFrame?它应该在一个完全独立的类中吗?它应该在包含要加载的第一个接口的类中吗?我应该创建一个扩展JFrame的新类吗?有什么我应该遵守的惯例吗?将JFrame作为参数传递给每个面板似乎有点过分。提前谢谢。我会用这样的方法 使用可能的接口声明枚举: public enum PossibleInterfaces
所以我的问题是:在哪里最好地声明JFrame?它应该在一个完全独立的类中吗?它应该在包含要加载的第一个接口的类中吗?我应该创建一个扩展JFrame的新类吗?有什么我应该遵守的惯例吗?将JFrame作为参数传递给每个面板似乎有点过分。提前谢谢。我会用这样的方法 使用可能的接口声明枚举:
public enum PossibleInterfacesEnum {
INTERFACE_1 {
public javax.swing.JPanel getInstance() {
return new javax.swing.JPanel();
}
},
INTERFACE_2 {
public javax.swing.JPanel getInstance() {
return new javax.swing.JPanel();
}
};
public abstract javax.swing.JPanel getInstance();
}
然后,我将创建一个类来管理我的框架,如下所示:
public class MyFrameManager {
private JFrame frame;
private CardLayout frameLayout;
public MyFrameManager() {
super();
frame = new JFrame("My App");
frame.setLayout(frameLayout = new CardLayout());
frame.setSize(320, 240);
// Adding to the layout all possible interfaces, each referenced by its name
for (PossibleInterfacesEnum e : PossibleInterfacesEnum.values()) {
frameLayout.addLayoutComponent(e.getInstance(), e.name());
}
}
public void showInterface(PossibleInterfacesEnum e) {
frameLayout.show(frame.getContentPane(), e.name());
if (!frame.isVisible()) {
frame.setVisible(true);
}
}
}
最后,从我的应用程序中,我将使用我的框架管理器,指示我要显示的界面:
public class MyApp {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MyFrameManager f = new MyFrameManager();
f.showInterface(PossibleInterfacesEnum.INTERFACE_1);
}
});
}
}
我希望这对你有用
关于,“我设置了JFrame的内容窗格”这是错误的方法。创建
JPanel
。给它一个卡片布局
。将该面板添加到框架(或小程序、窗口或对话框…)并显示它。使用卡片布局在视图之间切换。好的,谢谢,这看起来确实是一个更好的方法:),但仍然存在类似的问题。是否有使用CardLayout声明面板的常规位置?只是出于兴趣,为什么设置新的内容窗格是错误的方法?是出于性能原因,还是卡布局更为传统?