如何制作具有多个面板的框架像这样

时间:2015-09-26 03:51:02

标签: java swing layout jframe jpanel

我试过这个布局,但它只显示了一个面板。 我需要左侧面板(面板1)比第二个面板小一点。 它目前显示菜单,面板1位于中心。

我尝试了所有的每个布局示例,但仍无法显示面板2。

我谦卑地等待任何可能有助于解决我的问题的建议。

public PrintBillPanel() {
    GridLayout lay1 = new GridLayout(0, 2, 10, 5);
    mainPanel = new JPanel();
    mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.X_AXIS));
    printBill = new JPanel();
    showBill = new JPanel();
    printBill.setLayout(lay1);
    mainPanel.add(printBill);
    mainPanel.add(showBill);
    mainPanel.setVisible(false);
}

1 个答案:

答案 0 :(得分:0)

您没有设置任何一个面板的尺寸,因此它们可以为零尺寸。您也没有做任何会使面板在视觉上与众不同的事情。我不确定你为什么要将mainPanel设置为不可见。设置尺寸和背景后,可以区分面板,代码可以正常工作。

java.awt.EventQueue.invokeLater(() ->  {
    JFrame frm = new JFrame();
    JPanel mainPanel = new JPanel();
    frm.add(mainPanel);
    BoxLayout layout = new BoxLayout(mainPanel, BoxLayout.X_AXIS);
    mainPanel.setLayout(layout);
    JPanel panel1 = new JPanel();
    panel1.setBackground(Color.red);
    panel1.setPreferredSize(new Dimension(100, 300));
    mainPanel.add(panel1);
    JPanel panel2 = new JPanel();
    panel2.setBackground(Color.blue);
    panel2.setPreferredSize(new Dimension(200, 300));
    mainPanel.add(panel2);
    frm.add(mainPanel);
    frm.pack();
    frm.setVisible(true);
});