我当前的问题是,我有一个JFrame与2x2GridLayout.和内部的一个广场,我有一个JPanel,是显示一个电网。我有一个领域的一天java摆图书馆...看看

图像

Java是自动扩大每个JLabel以适应屏幕。我想它只是那些蓝色的正方形(水)和黑边界,而不是灰色的空间。有没有办法我只能设置的尺寸,JPanel永久这样我不必经过改变的大小JFrame一百万次我得到精确的尺度这样的灰色空间消失了?

我还要设置的尺寸的那些按钮,使他们不那么庞大(BorderLayout 正在使用的按钮和编辑框)

有帮助吗?

解决方案

如果您希望两个棋盘保持相同的大小,那么你就需要让他们每个包含在自己的JPanel。设置每个那些父母JPanel的的有GridBagLayout的布局类型。设置preferedSize每个棋盘组件,然后将它们添加到各自的容器中。 GridBagLayout的默认情况下应在父JPanel的中心打好每块板出来。因此,作为窗口的大小时,JPanel的父区域将获得更大或更小,但棋盘部件内将保持相同的尺寸。

另外,也可以具有与该窗口由具有每个方格正方形是具有JPanel布局管理器BorderLayout并添加JLabel(具有蓝色背景颜色)到其BorderLayout.CENTER位置调整了大小的蓝色正方形缩放到合适的大小。

至于你的按钮,尝试这样的事情:

JPanel theButtonPanel = new JPanel(new BorderLayout());
JButton button1 = new JButton("Fire");
JButton button2 = new JButton("Pass");
JButton button3 = new JButton("Forfiet");

JPanel innerButtonContainer = new JPanel(new Grid(1, 3, 8, 8));
innerButtonContainer.add(button1);
innerButtonContainer.add(button2);
innerButtonContainer.add(button3);

theButtonPanel.add(innterButtonContainer);

最后,可以考虑使用一个设计工具,为您的Swing用户界面。 Netbeans的具有的优异的UI 内置到它设计师。下载Netbeans的这里

其他提示

GridBagLayout 为什么你真的想要使用。该GridLayout将力相同大小的每个组件在的布局不管是什么尺寸限制你把他们。GridBagLayout是一个更强大和复杂得多。研究了 API页 为。使用 GridBagLayout, ,组件不会充满整个空间网格如果你不想让他们甚至可以留的尺寸要求。要保持一个组分的大小从改变,我将设置的所有三种尺寸限制:

water.setPreferredSize(new Dimension(20, 20));
water.setMinimumSize(new Dimension(20, 20));
water.setMaximumSize(new Dimension(20, 20));

你的按钮,我肯定会使用一个内部小组 布莱恩 提及。你可以使用GridLayout喜欢他建议或FlowLayout如果你不想要所有的按钮是同样大小。添加所有的你的按钮,内板,而不是主要原因之一。

如果你能顶层框架上setResizeable( false )你可以再设置你的布局管理器为null,硬代码通过各的setBounds位置和大小。这是我会怎么做(在队伍当然调整)。

我有这样的使用TableLayout这是一个第三方的布局管理器成功解决问题。您将需要下载并阅读教程,但关键是在布局中添加Jbutton将自己的立场时,理由设置为中心。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top