我在Java创建应用程序方面有一些经验,并且想了解更多信息,因此决定创建一个具有不同页面的应用程序。例如,初始框架将显示一个按钮菜单,这些菜单将导致不同的框架,从而显示不同的组件和布局。
我不太确定实现页面的最佳做法。我想我可以将JFrame
窗口存储在一个列表中,然后使用按钮处理程序类来更改不同框架的可见性,仅当用户单击按钮时才允许相关框架可见。我认为这种方法可行,但是是否有更有效/实用的方法呢?
我知道CardLayout
,但是对于这个程序,我正在尝试学习MigLayout
;因此,据我所知,这将是不可能的。我希望这个问题不要太含糊,我只是想了解有关在Java中创建具有不同页面的应用程序的最佳实践。
答案 0 :(得分:0)
可以使用选项卡式窗格,这是存储页面的最佳选择。
https://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html
我还注意到您需要适当考虑顶级容器,因为您不必每次都为每个Page创建一个JFrame,至少在必要的情况下(例如:编辑器,创建一个新窗口,您需要创建一个新的JFrame(对于您而言,我认为不是),因此请考虑下面的链接。
https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html
答案 1 :(得分:0)
JInternalFrame 是Java Swing的一部分。 JInternalFrame是一个容器,提供框架的许多功能,包括显示标题,打开,关闭,调整大小,支持菜单栏等。Internal frames with components example
创建多个内部框架的代码:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
class solution extends JFrame {
// frame
static JFrame f;
// label to diaplay text
static JLabel l, l1;
// main class
public static void main(String[] args) {
// create a new frame
f = new JFrame("frame");
// set layout of frame
f.setLayout(new FlowLayout());
// create a internal frame
JInternalFrame in = new JInternalFrame("frame 1", true, true, true, true);
// create a internal frame
JInternalFrame in1 = new JInternalFrame("frame 2", true, true, true, true);
// create a Button
JButton b = new JButton("button");
JButton b1 = new JButton("button1");
// create a label to display text
l = new JLabel("This is a JInternal Frame no 1 ");
l1 = new JLabel("This is a JInternal Frame no 2 ");
// create a panel
JPanel p = new JPanel();
JPanel p1 = new JPanel();
// add label and button to panel
p.add(l);
p.add(b);
p1.add(l1);
p1.add(b1);
// set visibility internal frame
in.setVisible(true);
in1.setVisible(true);
// add panel to internal frame
in.add(p);
in1.add(p1);
// add internal frame to frame
f.add(in);
f.add(in1);
// set the size of frame
f.setSize(300, 300);
f.show();
}
}