java中2列的布局

时间:2015-04-04 16:18:15

标签: java layout scrollpane

我在java中有一个代码:

gamePanel = new JPanel();
  gamePanel.setLayout(new FlowLayout());
  scrollPane = new JScrollPane(gamePanel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
     JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);   
  scrollPane.setBounds(5,50,300,100);

  JButton btn1 = new JButton("btn 1");
  JButton btn2 = new JButton("btn 2");
  JButton btn3 = new JButton("btn 3");
  JButton btn4 = new JButton("btn 4");
  JButton btn5 = new JButton("btn 5");
  gamePanel.add(btn1);
  gamePanel.add(btn2);
  gamePanel.add(btn3);
  gamePanel.add(btn4);
  gamePanel.add(btn5);

我希望结果是:

--------------------------
| Name1      |  Button 1 |
--------------------------
| Name2      |  Button 2 |
--------------------------
| Name3      |  Button 3 |
--------------------------

如果滚动窗格超过JPanel的大小,则必须使用滚动窗格。

在我的代码中,结果是:

---------------------------------------------------
| Name1      |  Button 1 | Name2      |  Button 2 |
---------------------------------------------------

1 个答案:

答案 0 :(得分:0)

JPanels默认使用FlowLayout,因此您无需声明它。尝试使用GridLayout,如下所示:

    JPanel gamePanel = new JPanel();
    gamePanel.setLayout(new GridLayout(3,2,2,2));


    JButton btn1 = new JButton("btn 1");
    JLabel name1 = new JLabel("name1");
    JButton btn2 = new JButton("btn 2");
    JLabel name2 = new JLabel("name2");
    JButton btn3 = new JButton("btn 3");
    JLabel name3 = new JLabel("name3");

    gamePanel.add(name1);
    gamePanel.add(btn1);
    gamePanel.add(name2);
    gamePanel.add(btn2);
    gamePanel.add(name3);
    gamePanel.add(btn3);