动态添加组件到JPanel更改组件大小

时间:2016-03-08 15:18:02

标签: java swing jpanel layout-manager

  1. 我试图动态添加组合框到JPanel,但组合框占用整个面板。根据组合框计数,组合框的大小正在改变,但我想要组合框的固定大小,我需要创建组合框一个接一个地表示另一个组合/在新行中。
  2. 如何在面板中设置组件的位置。

    JComboBox startDate = new JComboBox();
    startDate.setPreferredSize(new Dimension(80,25));
    jPanelStartDate.add(startDate);
    jPanelStartDate.setLayout(new GridLayout(0, 3, 10, 10));
    jPanelStartDate.revalidate();
    

1 个答案:

答案 0 :(得分:0)

好的,你有多个选项。您可以将BoxLayout与Y_Axis和rigid area一起使用,也可以使用更高级,复杂且动态的GridBagLayout。以下是BoxLayout和刚性区域的示例。

 JFrame frame = new JFrame("Test");
 JPanel panel = new JPanel();

 BoxLayout boxLayout = new BoxLayout(panel, BoxLayout.Y_AXIS);
 panel.setLayout(boxLayout);

 for(int index = 0; index < 5; ++index){

      JComboBox<String> box = new JComboBox<>(new String[]{"a", "b", "c"});

      box.setMaximumSize(new Dimension(50, 50));
      box.setMinimumSize(new Dimension(50, 50));

      panel.add(box);

      panel.add(Box.createRigidArea(new Dimension(10, 10)));
 }

 frame.setContentPane(panel);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setSize(new Dimension(300, 300));
 frame.setVisible(true);

您可以根据需要更改尺寸,特别是刚性区域的尺寸,以调整组件的空间和尺寸。