Pau*_*ers 3 java swing layout-manager grid-layout flowlayout
我正在尝试创建一个 JDialog,就像 Microsoft Word 中的“符号”对话框一样,您可以通过从“插入”菜单中选择“符号...”来获得该对话框。基本上,它是一个n x m(n和m直到运行时才知道)的小按钮网格。我已经有了一个使用 GridLayout 很好地工作的第一个版本。问题是,当您调整对话框大小时(并且要求您应该能够调整它的大小),按钮的大小会发生变化。我需要按钮的大小保持不变。
但我希望包含按钮的网格的尺寸发生变化。例如,如果对话框变宽,但高度保持不变,则行数应减少,而列数应增加。
我想了几种方法来解决这个问题:
解决这个布局问题的最佳方法是什么?
使用 GridLayout 创建一个按钮面板并为其设置固定大小(当然可以在运行时计算)。按钮面板应包含在 BoxLayout 的面板中。
非常非常基本的例子:
public static void main(String[] args) throws Exception
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel buttonPanel = new JPanel();
JPanel containerPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(2,2));
buttonPanel.add(new JButton("1"));
buttonPanel.add(new JButton("2"));
buttonPanel.add(new JButton("3"));
buttonPanel.add(new JButton("4"));
buttonPanel.setPreferredSize(new Dimension(300, 400));
containerPanel.add(buttonPanel);
frame.getContentPane().add(containerPanel);
frame.pack();
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)