JPanel在另一个JPanel里面:Swing

时间:2017-11-25 14:25:41

标签: java swing layout-manager grid-layout boxlayout

我正在编写一个应该在广播电台上显示信息的程序,我希望用户通过点击他们喜欢的频道图像来获取该信息。

使用网格布局设置通道,但我希望每个网格内部都是通道图像和图像正下方通道的名称。所以我认为BoxLayout内的GridLayout可以解决问题,但我没有让GUI看起来像我想要的那样。

 jf = new JFrame();

      jf.setTitle("tutorial");
      jf.setSize(500, 500);
      jf.setMinimumSize(new Dimension(500, 500));
      jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

      JPanel jPanel = new JPanel();
      jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.Y_AXIS));
      JButton jButton1 = new JButton("first");
      JButton jButton2 = new JButton("second");
      jPanel.add(jButton1);
      jPanel.add(jButton2);
      jf.add(jPanel);

      grid = new JPanel();
      grid.setLayout(new GridLayout(3,4,5,10));
      grid.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);


      JPanel jPanel2 = new JPanel();
      jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.PAGE_AXIS));
      JButton jButton = new JButton("first");
      JButton jButton12 = new JButton("second");
      jPanel.add(jButton);
      jPanel.add(jButton12);
      grid.add(jPanel);
      grid.add(jPanel2);

      jf.add(grid);

以下是我尝试将带有两个按钮的框布局放入网格布局的示例代码。

我应该如何将一个布局放入另一个布局?

1 个答案:

答案 0 :(得分:1)

回复:

  

[...]我希望每个网格内部都是通道的图像和图像正下方的通道名称。

请参阅How to Use Buttons, Check Boxes, and Radio Buttons

  

enter image description here

ImageIcon middleButtonIcon = createImageIcon("images/middle.gif");

...

b2 = new JButton("Middle button", middleButtonIcon);
b2.setVerticalTextPosition(AbstractButton.BOTTOM);
b2.setHorizontalTextPosition(AbstractButton.CENTER);