我在下面的代码中创建了一个标签页面。 我希望每个布局在整个框布局的一行中,但我希望元素保持原始大小而不是展开以填充整个窗口的宽度。有谁知道我需要改变哪些代码行?或者最好的方法是什么?!附上的图片显示了目前的样子
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);
}
图像
答案 0 :(得分:2)
Min, Max and PreferredSize
JComponents
我希望每个布局在整个盒子布局的一行中,但我希望元素保持原始大小而不是展开以填充整个窗口的宽度
我将使用正确的LayoutManage
r,FlowLayout仅接受PreferredSize
,和/或GridBagLayout without defininitions of GridBagConstraints所有JComponents
容器调整大小不变
并没有让我(我的观点)理由为什么(确定这是你的工作),但为了更好的帮助,请尽快发布SSCCE
答案 1 :(得分:2)
最简单的方法是将您的panel4
添加到使用GridBagLayout
的其他面板,然后将 面板添加到容器中。然后它将居中,没有任何东西会在调整大小时拉伸。
JPanel centeredPanel = new JPanel(new GridBagLayout());
centeredPanel.add(panel4); // add this panel to the container
您还应该构建具有指定列数的文本字段,例如
indexTextField = new JTextField(20);