所以我的计算器程序看起来不错,除非我调整它的大小。然后事情就完全没了。现在我正在使用GridBagLayout来组织我的按钮(在给定多个按钮的情况下,最好使用GridBag来处理这种情况)。我将preferredSize设置为我想要的启动按钮大小。如何在窗口调整大小时让按钮改变大小?
这是我将应用程序调整得更小后会发生的事情。 当我把它做得更大时,一切都保持不变,我在两边都有灰色的空虚来弥补空间,而不是放大按钮。
对于我的按钮尺寸,我正在使用new Dimension(80, 55)
然后将preferredSize设置为该维度。
对于内存按钮和jlabels,我计算了一些数学运算,使其与整个按钮一样宽。
请注意我还在学习java,以及swing库。 结束注释
更新我在设置首选尺寸时尝试设置最小和最大尺寸但仍然没有 END UPDATE
更新2 我尝试将主面板的尺寸设置为与启动时的应用尺寸相匹配,但不起作用 END UPDATE
编辑2 我的层次结构如下:
FRAME
MAINPANEL - Contains all three panels
TOPPANEL - Contains the display
MIDDLEPANEL - Contains memory buttons
BOTTOMPANEL - Contains calculator buttons
END EDIT 2
答案 0 :(得分:0)
我建议使用Oracle的TableLayout(你可以在那里下载),因为它更舒服。当然也可以使用GridBagLayout,但特别是当你是新手时,TableLayout更容易理解和配置。
double size[][] =
{{0.25, 0.25, 0.25, 0.25}, //Horizontal
{50, TableLayout.FILL, 40, 40, 40}}; //Vertical
frame.setLayout (new TableLayout(size));
它基本上是一个分为行和列的网格。因此,每个单元具有id,例如“0,0”。 高度和宽度可通过像素,百分比和Layout.FILL进行调整,它使用可用空间。如果您使用多个Layout.FILL,它将分隔它们之间的可用空间。
要添加按钮或其他元素,您需要知道单元格坐标,如果它大于一个单元格,您可以添加一个结束单元格,这样您就可以使用整个可用位置。
// Add buttons
frame.add (button[0], "1, 1, 4, 1"); // Top
frame.add (button[1], "1, 4, 4, 4"); // Bottom
frame.add (button[2], "1, 3 "); // Left
frame.add (button[3], "4, 3 "); // Right
frame.add (button[4], "3, 3, c, c"); // Center
frame.add (button[5], "3, 3, 3, 4"); // Overlap
这里有一些有用的链接:
http://www.oracle.com/technetwork/java/tablelayout-141489.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Simple.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Preferred.html