如何以垂直方式将JButtons添加到面板?

时间:2018-05-27 17:59:24

标签: java swing netbeans jframe jpanel

我试图做的任务很简单。我想以垂直方式将JButtons添加到面板,但是使用循环来添加它,我尝试使用.setBounds()和.setLocation()mehtod,但我没有任何结果。

以一种简单的方式,我想这样做但是垂直添加按钮并保留JScroll栏......:

  public class NewMain {

public static void main(String[] args) {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    frame.setLayout(null);
    for (int i = 0; i < 10; i++) {
        JButton asd=new JButton("HOLA "+i);
        asd.setLocation(i+20, i+20);
        panel.add(asd);
    }
    JScrollPane scrollPane = new JScrollPane(panel);
    scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    scrollPane.setBounds(50, 30, 300, 50);
    JPanel contentPane = new JPanel(null);
    contentPane.setPreferredSize(new Dimension(500, 400));
    contentPane.add(scrollPane);
    frame.setContentPane(contentPane);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setVisible(true);
}

1 个答案:

答案 0 :(得分:1)

  1. 为持有JButton的JPanel提供适当的布局管理器,以垂直方式添加组件。 GridLayout(0, 1)可以使用,参数引用0行 - 意味着变量行数和1列。这会将JButton添加到一个
  2. 的垂直网格列中
  3. 其他可能的解决方案包括BoxLayout和GridBagLayout,它们都比GridLayout更复杂 little
  4. 同时避免使用null布局,因为这会导致GUI不灵活的调试和更改。