以下是用户单击按钮时更改颜色的窗口代码,并在单击其他按钮时更改标签文本。
它有两个按钮,一个用于按住按钮的面板,一个标签和一个用于图形的面板。
概念解释:
首先,我使用默认label
将North
添加到frame
的{{1}}部分。然后我在单独的面板中添加了两个BorderLayout
,并将buttons
添加到主panel
的{{1}}部分。然后,我在主South
的{{1}}中添加了frame
图片。
panel
这是上面代码的输出。太好了。
但是当我从右侧开始滑动时,会发生以下情况:
现在窗户的右墙朝左,但按钮是静止的。接下来我们得到:
但是,如果我们从左侧调整大小,我们会得到:
此处按钮似乎与框架一起向右移动(保持其与框架边界的距离)。这与前一案例相反。但为什么?怎么样?
最后,我们有:
继续这一点,“ColorChange”按钮也变得部分不可见。
如果我们从右向左滑动而从左向右滑动,为什么会发生这两种不同的事情呢?
我已经搜索过,但我无法找到准确的答案,所以最后我在这里问:为什么和如何?
答案 0 :(得分:3)
您已解释了该问题,但您尚未解释该要求。
也许你应该考虑Box Layout
panel.add( Box.createHorizontalGlue() );
panel.add( button1 );
panel.add( Box.createHorizontalStrut(20) );
panel.add( button2 );
panel.add( Box.createHorizontalGlue() );
这将创建一个面板,其中按钮保持居中,两个按钮之间的间隙为20像素。
答案 1 :(得分:2)
这是因为你的差距值
int pad = 80;
buttonPanel.setLayout(new FlowLayout(FlowLayout.LEADING, pad, 20));
。它总是80px。所以第一个按钮总是 80px远离"开头"小组的。如果你从右向左滑动,没有任何变化,除了一个按钮消失,因为没有足够的空间来填补3个间隙。但是,如果您从左向右滑动,第一个按钮不会首先消失,因为如前所述, 从开头有80px的差距。对不起我的悲惨英语,但我希望我能帮到你。
答案 2 :(得分:1)
这可能是您所需要的:https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/size.html
我暂时没有使用Swing / JavaFX,但我相信你可以提供frame.pack();一枪。