当前位置: 首页 > 面试题库 >

为什么BoxLayout不允许我更改JButton的宽度,但允许我更改高度?

雍志新
2023-03-14
问题内容

我试图获取我的Layout
JDialog以适合我要移植到Java的程序的外观,在此之前,我已经使用了多个LayoutManager并获得了巨大的成功,但是由于某些原因,我似乎无法获得此布局都在工作。我的目标是有权利(东)侧的JDialog包含一个“查找下一个”和自上而下的命令“取消”按钮,然后在下面的任何额外的空间,从而使两个按钮总是在的顶部JDialog,但由于某种原因,BoxLayout它会不断忽略更改a宽度的任何尝试(这是我迷失的地方)JButton。代码如下。

JButton findNext = new JButton("Find Next");
JButton cancel = new JButton("Cancel");
cancel.setPreferredSize(new Dimension((int)findNext.getPreferredSize().getWidth(),  
    (int)cancel.getPreferredSize().getHeight()));

JPanel example = new JPanel();  
example.setLayout(new BoxLayout(example, BoxLayout.Y_AXIS));  
example.add(findNext);
example.add(cancel);  
example.add(Box.createGlue());

无论我尝试什么,cancel都始终保持其正常大小。我已经尝试过,setMinimumSize()并且setMaximumSize()使用setPreferredSize与没有运气相同的参数。我什至尝试过,cancel.setPreferredSize(new Dimension(500, 500));并且仅调整了按钮的高度,它仍然保留了给定的默认宽度。

要清除任何问题,这是它的外观(现在我已经完成了),您会看到“查找下一个”和“取消”按钮的大小不同。


问题答案:

我知道这是一个老问题,但我真的看不到很好的解释。因此,为了让搜寻者不知所措,我将加收我的两分钱。

Swing中与调整组件大小相关的三种html" target="_blank">方法是:setPreferredSize(),setMinimumSize()和setMaximumSize()。但是,重要的是,取决于是否使用特定的布局管理器来支持这些方法。

对于BoxLayout(原始海报使用的布局):

  • setMinimumSize()- BoxLayout兑现此
  • setMaximumSize()- BoxLayout兑现
  • setPreferredSize()-如果使用X_AXIS,则宽;如果使用Y_AXIS,则高;

OP正在使用Y_AXIS BoxLayout,这就是为什么仅更改他的身高的原因。

更新:
我为所有布局管理者整理了一个页面,其中包含相同的信息。希望它可以帮助一些搜索者:http : //thebadprogrammer.com/swing-layout-manager-
sizing/



 类似资料:
  • 问题内容: 是否可以授予用户查看权限,但不能更改或删除。 目前,我所看到的唯一权限是“添加”,“更改”和“删除” …,但是其中没有“读取/查看”功能。 我确实需要这样做,因为有些用户只能查看管理面板,以查看已添加的内容。 问题答案: 在admin.py中 有了这个: 然后通过删除以下行来删除提交按钮:

  • 问题内容: 如何使用T-SQL更改表中的一个属性以允许为null(不为null-> null)?也许更改表? 问题答案:

  • 问题内容: 我正在尝试使用Python脚本更改目录,但出现错误。 python代码: 我收到此错误: 错误是什么意思,我在做什么错,如何在python子进程中更改目录? 问题答案: 没有(模拟外壳程序) 除非通过以下方式进行更改,否则无法更改目录: 因此,问题不在于路径不存在,而是在Python的仿真终端中作为选项不存在。直接传递到实际的外壳即可。但是请注意,是有风险的,从来没有,除非你需要..用

  • 问题内容: 我想知道Java中是否有特殊原因总是使用“ ”而不是“ ”来定义类型参数的界限。 例: 被禁止但是 是正确的。是什么原因呢? 问题答案: 在类“实现”还是“扩展”之间,通用约束语言没有语义差异。约束可能性是“扩展”和“超级”-也就是说,该类是可分配给其他类的对象(扩展),还是该类可从该类分配(超级)。

  • 问题内容: 编辑:当我说“ SQL Server”时,我实际上是在谈论Management Studio。 抱歉,这令人困惑。 哦,我讨厌这种事情发生。昨天我在使用SQL Server,并尝试使用PIVOT命令来弄清楚它是如何工作的。因此,我创建了一个包含四列的新表,第一列的前几行将具有相同的值。 我在第一行,第一列中添加了“ value1”,然后按回车键–因为还没有添加任何键或约束,它使我可以向

  • 我正在尝试导出可运行的文件,但每次我这么做时,它都会说,“VM参数将不是可运行jar的一部分。在启动jar时,可以在命令行上传递参数。” 有人知道怎么修吗?