在Java Swing中将GridBagLayout的位置设置在JPanel的顶部

Uda*_*ara 0 java layout user-interface swing gridbaglayout

我已经编写了以下代码来添加一个JLabela JPanel但它显示在中心,而我预计它将被放置在顶部JPanel.

这是我所指的那段代码:

JPanel pnlProjects = new JPanel();
pnlProjects.setMinimumSize(new Dimension(10, 300));
GridBagLayout gridBagLayout = new GridBagLayout();
pnlProjects.setLayout(gridBagLayout);
GridBagConstraints gridBagConstraints = new GridBagConstraints();

// add multiple label dynamically;
for (int count = 0; count < project.length; count++) {
    lblProjects[count] = new JLabel("Project"+count );
    lblProjects[count].setHorizontalAlignment(SwingConstants.LEFT);
    lblProjects[count].setHorizontalTextPosition(SwingConstants.LEFT);
    lblProjects[count].setBorder(BorderFactory.createBevelBorder(0));
    lblProjects[count].setPreferredSize(new Dimension(100, 20));
    gridBagConstraints.fill = GridBagConstraints.VERTICAL;
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = count;
    pnlProjects.add(lblProjects[count], gridBagConstraints);
}

// Add project panel in to the scorllPan
JScrollPane jspProjectlist = new JScrollPane(pnlProjects);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有人会根据我的要求向我解释如何改变它吗?

ale*_*410 5

您可以使用下一个技巧:在循环后添加下一个代码:

gridBagConstraints.weighty=1;
gridBagConstraints.gridy++;
pnlProjects.add(new JLabel(" "), gridBagConstraints);
Run Code Online (Sandbox Code Playgroud)

那个假人JLabel会抓住你项目下的所有空间JLabel.

在此输入图像描述