0

我在下面有这段代码来在选项卡内创建一个页面。我希望每个布局在整体框布局的一行中,但我希望元素保持其原始大小,而不是扩展以填充整个窗口的宽度。有谁知道我需要更改哪些代码行或最好的方法是什么?!附上的图片显示了它目前的样子

在此处输入图像描述

public void createPage4() {
    panel4 = new JPanel();
    panel4.setLayout(new BoxLayout(panel4, BoxLayout.Y_AXIS));
    navigatePanel = new JPanel();
    navigatePanel.setLayout(new BoxLayout(navigatePanel, BoxLayout.X_AXIS));
    previousButton.setText("Previous");
    previousButton.setEnabled(false);
    navigatePanel.add(previousButton);
    navigatePanel.add(Box.createHorizontalStrut(10));
    indexTextField.setHorizontalAlignment(JTextField.CENTER);
    navigatePanel.add(indexTextField);
    navigatePanel.add(Box.createHorizontalStrut(10));
    ofLabel.setText("of");
    navigatePanel.add(ofLabel);
    navigatePanel.add(Box.createHorizontalStrut(10));
    maxTextField.setHorizontalAlignment(JTextField.CENTER);
    maxTextField.setEditable(false);
    navigatePanel.add(maxTextField);
    navigatePanel.add(Box.createHorizontalStrut(10));
    nextButton.setText("Next");
    nextButton.setEnabled(false);
    navigatePanel.add(nextButton);
    panel4.add(navigatePanel);
    displayPanel = new JPanel();
    displayPanel.setLayout(new GridLayout(5, 2, 4, 4));
    firstNameLabel.setText("First Name:");
    displayPanel.add(firstNameLabel);
    displayPanel.add(firstNameTextField);
    lastNameLabel.setText("Last Name:");
    displayPanel.add(lastNameLabel);
    displayPanel.add(lastNameTextField);
    panel4.add(displayPanel);
}

图片

图片

4

2 回答 2

2

最简单的方法是将您添加panel4到使用的其他面板,GridBagLayout然后将该面板添加到容器中。然后它将居中,调整大小时不会拉伸。

JPanel centeredPanel = new JPanel(new GridBagLayout());
centeredPanel.add(panel4);    // add this panel to the container

您还应该构造具有指定列数的文本字段,例如

indexTextField = new JTextField(20);
于 2012-10-12T11:23:21.737 回答
2
  • BoxLayout接受Min, Max and PreferredSize来自JComponents

我希望整个框布局的一行中的每个布局,但我希望元素保持其原始大小而不是扩展以填充整个窗口的宽度

于 2012-10-12T11:13:55.103 回答