Java 使用Borderlayout格式化3个JPanel
大家好 上面是我的框架的屏幕截图,它现在看起来是什么样子。我希望第一个标签PlatformTest1在红色条纹之后开始。为了清晰起见,我在自己身上画了红色条纹。 我使用了三个Janels的边界布局,一个在西部、北部和中部。我用从两个列表中得到的标签填充北面板和西面板。在中间面板中,我想要一个大小为list1.size()*list2.size()的网格。但是我不知道第一个标签是在红色条纹的位置添加的。我试着添加一个空白标签,但看起来不太好 以下是我目前的代码:Java 使用Borderlayout格式化3个JPanel,java,swing,jpanel,border-layout,Java,Swing,Jpanel,Border Layout,大家好 上面是我的框架的屏幕截图,它现在看起来是什么样子。我希望第一个标签PlatformTest1在红色条纹之后开始。为了清晰起见,我在自己身上画了红色条纹。 我使用了三个Janels的边界布局,一个在西部、北部和中部。我用从两个列表中得到的标签填充北面板和西面板。在中间面板中,我想要一个大小为list1.size()*list2.size()的网格。但是我不知道第一个标签是在红色条纹的位置添加的。我试着添加一个空白标签,但看起来不太好 以下是我目前的代码: public DisplayMap
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的边界,但也没有成功。我希望有人能帮上忙
提前感谢。您可以将当前的北面板和当前的中间面板放在中间的面板内。所以你会有这样的想法:
_____________________________________________________
| | Center Panel (also BorderLayout) |
|panelApps | ___________________________________ |
| | | panelHW | |
| | |___________________________________| |
| | | panelGrid | |
这样,您的应用程序面板将位于内容窗格的顶部,您的硬件面板也将位于顶部,但将位于应用程序面板旁边
我在硬件和网格面板周围放置的中心面板的“边框”实际上不会显示,因为面板将延伸到“中心面板”的边缘。我刚才这样画是为了显示面板的“层次结构”。您可以将当前的北面板和当前的中间面板放在中间的面板中。所以你会有这样的想法:
_____________________________________________________
| | Center Panel (also BorderLayout) |
|panelApps | ___________________________________ |
| | | panelHW | |
| | |___________________________________| |
| | | panelGrid | |
这样,您的应用程序面板将位于内容窗格的顶部,您的硬件面板也将位于顶部,但将位于应用程序面板旁边
我在硬件和网格面板周围放置的中心面板的“边框”实际上不会显示,因为面板将延伸到“中心面板”的边缘。我刚才这样画是为了显示面板的“层次结构”。您可以将当前的北面板和当前的中间面板放在中间的面板中。所以你会有这样的想法:
_____________________________________________________
| | Center Panel (also BorderLayout) |
|panelApps | ___________________________________ |
| | | panelHW | |
| | |___________________________________| |
| | | panelGrid | |
这样,您的应用程序面板将位于内容窗格的顶部,您的硬件面板也将位于顶部,但将位于应用程序面板旁边
我在硬件和网格面板周围放置的中心面板的“边框”实际上不会显示,因为面板将延伸到“中心面板”的边缘。我刚才这样画是为了显示面板的“层次结构”。您可以将当前的北面板和当前的中间面板放在中间的面板中。所以你会有这样的想法:
_____________________________________________________
| | Center Panel (also BorderLayout) |
|panelApps | ___________________________________ |
| | | panelHW | |
| | |___________________________________| |
| | | panelGrid | |
这样,您的应用程序面板将位于内容窗格的顶部,您的硬件面板也将位于顶部,但将位于应用程序面板旁边
我在硬件和网格面板周围放置的中心面板的“边框”实际上不会显示,因为面板将延伸到“中心面板”的边缘。我刚才这样画是为了显示面板的“层次结构”。我试过了,但没那么难。我不能在“中心面板”上放置两个面板,如果我将panelGrid放入panelHW网格,它看起来很奇怪。所以它到现在为止对我不起作用。@Alika87为什么你不能在中心面板上放置两个面板?eclipse的windowbuilder只允许在Borderlayout.center中一次放置一个面板。@Alika87哦,我想你误解我了。两个面板都应位于“中心面板”内,但
panelHW
应位于BorderLayout。北和panelGrid
应位于BorderLayout。现在我知道了。我明天会试试,希望能接受你的答案。非常感谢。我试过了,但没那么难。我不能在“中心面板”上放置两个面板,如果我将panelGrid放入panelHW网格,它看起来很奇怪。所以它到现在为止对我不起作用。@Alika87为什么你不能在中心面板上放置两个面板?eclipse的windowbuilder只允许在Borderlayout.center中一次放置一个面板。@Alika87哦,我想你误解我了。两个面板都应位于“中心面板”内,但panelHW
应位于BorderLayout。北和panelGrid
应位于BorderLayout。现在我知道了。我明天会试试,希望能接受你的答案。非常感谢。我试过了,但没那么难。我不能在“中心面板”上放置两个面板,如果我将panelGrid放入panelHW网格,它看起来很奇怪。所以它到现在为止对我不起作用。@Alika87为什么你不能在中心面板上放置两个面板?eclipse的windowbuilder只允许在Borderlayout.center中一次放置一个面板。@Alika87哦,我想你误解我了。两个面板都应位于“中心面板”内,但panelHW
应位于BorderLayout。北和panelGrid
应位于BorderLayout。现在我知道了。我明天会试试,希望能接受你的答案。非常感谢。我试过了,但没那么难。我不能在“中心面板”上放置两个面板,如果我将panelGrid放入panelHW网格,它看起来很奇怪。所以它到现在为止对我不起作用。@Alika87为什么你不能在中心面板上放置两个面板?eclipse的windowbuilder只允许在Borderlayout.center中一次放置一个面板。@Alika87哦,我想你误解我了。两个面板都应位于“中心面板”内,但panelHW
应位于BorderLayout。北和panelGrid
应位于BorderLayout。现在我知道了。我明天会试试,希望能接受你的答案。谢谢。