由于某些原因,我添加到内容JPanel的JPanels是垂直拉伸的,而不是首选的大小。这是代码:
public static JPanel content;
public APP()
{
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setJMenuBar(new MenuBar());
content = new JPanel(new GridLayout(0, 8, 2, 2));
add(new JScrollPane(content, 22, 32), BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
addJPanel();
addJPanel();
}
public void addJPanel()
{
JPanel box = new JPanel();
box.setPreferredSize(new Dimension(100, 100));
box.setBackground(Color.BLACK);
content.add(box);
content.validate();
}
如何在添加时将它们保持在特定尺寸?或者至少让它们不会在内容面板中一直拉伸。我希望它们在不改变尺寸的情况下具有相同的尺寸,因为添加了更多的面板。
* 注意: addJPanel()允许我使用按钮或操作动态地将新面板添加到内容面板中。它只是一种测试方法,实际添加的面板来自菜单按钮调用的动作。
答案 0 :(得分:1)
我最终找到了使用胶水进行盒子布局的解决方案,因为我真的想使用GridLayout来简化我的工作:
我添加了另一个JPannel,然后添加胶水,然后添加内容,然后将胶水面板添加到滚动窗格中的框架:
public static JPanel content;
public static JPanel wrapper;
public APP()
{
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setJMenuBar(new MenuBar());
content = new JPanel(new GridLayout(0, 8, 2, 2));
wrapper = new JPanel(new BorderLayout());
wrapper.add(Box.createGlue(), BorderLayout.CENTER);
wrapper.add(content, BorderLayout.NORTH);
add(new JScrollPane(wrapper, 22, 32), BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
}
然后我只使用wrapper.revalidate()以便它考虑新的维度。现在就像一个魅力。