0

在此处输入图像描述

嗨,大家好,

上面是我的框架的截图,它现在的样子。我希望第一个标签 PlatformTest1 在红色条纹之后开始。为了清楚起见,我在自己身上画了红色条纹。我使用了带有 3 个 Janels 的 Borderlayout,一个在 West、North 和 Center。我用从两个列表中获得的标签填充北面板和西面板。在中心面板中,我想要一个大小为 list1.size() * list2.size() 的网格。但是我只是没有在红色条纹所在的位置添加第一个标签。我尝试添加一个空白标签,但这看起来不太好。

到目前为止,这是我的代码:

public DisplayMapping() {

    final int x = list1.size();
    final int y = list2.size();

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100,600, 500);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(new BorderLayout(0, 0));

    JPanel panelApps = new JPanel();
    panelApps.setBorder(new LineBorder(new Color(0, 0, 0), 2));
    contentPane.add(panelApps, BorderLayout.WEST);
    panelApps.setLayout(new GridLayout(y, 1));


    JPanel panelHW = new JPanel();
    panelHW.setBorder(new LineBorder(new Color(0, 0, 0), 2));
    contentPane.add(panelHW, BorderLayout.NORTH);
    panelHW.setLayout(new GridLayout(1,x));

    JPanel panelGrid = new JPanel();
    contentPane.add(panelGrid, BorderLayout.CENTER);
    panelGrid.setLayout(new GridLayout(1, 0, 0, 0));

    for(String s : list1)
    {
        JLabel lbl = new JLabel();
        lbl.setText(s);
        panelApps.add(lbl);
        panelApps.revalidate();
        panelApps.repaint();
        contentPane.revalidate();
        contentPane.repaint();
    }

    for(String s : XMLParser.HardwareListGUI)
    {
        JLabel lbl = new JLabel();
        lbl.setText(s);
        panelHW.add(lbl);
        panelHW.revalidate();
        panelHW.repaint();
        contentPane.revalidate();
        contentPane.repaint();
    }

我还尝试在 x 方向上设置 PanelApps 的边界,但也没有成功。我希望有人可以在这里提供帮助。

提前致谢。

4

1 回答 1

3

您可以做的是将当前的北面板和当前的中心面板放在中心的面板中。所以你会有这样的事情:

 _____________________________________________________
|             | Center Panel (also BorderLayout)      |
|panelApps    |  ___________________________________  |
|             | | panelHW                           | |
|             | |___________________________________| |
|             | | panelGrid                         | |

这样,您的应用程序面板将转到内容窗格的顶部,您的硬件面板也将转到顶部,但将在应用程序面板旁边。

我在硬件和网格面板周围放置的中心面板的“边框”实际上不会显示,因为面板将延伸到“中心面板”的边缘。我刚刚这样绘制它以显示面板的“层次结构”。

于 2013-11-08T19:26:33.853 回答