如何调试Java Swing布局

11

有一种方法可以打印特定组件的布局信息。我知道有这样的一个方法,但我忘记了它的名字。

当您为Swing组件调用该方法时,它会显示该组件的详细布局信息,就像dumpstacktrace调用一样。

有任何想法吗?那个方法叫什么名字?我在一本书中读到过,但是忘记了。或者让我知道一些调试Java Swing布局的好方法。


你是指getLayout()吗? - Hovercraft Full Of Eels
3个回答

34

当您的JFrame可见时,按下CTRL+SHIFT+F1,查看控制台输出组件和布局树层次结构。


我无法在Eclipse上获取它,您是指调试时的Swing窗口吗? - shareef
1
@shareef 在窗口上。然后它将转储到控制台。 - Nateowami
1
自Java 9开始,您必须传递“-Dsun.awt.nativedebug=true -Dawtdebug.on=true”才能获取组件的转储。 - Alexey Ivanov

7
我不知道具体的方法,但你可以在运行时通过按键来实现这一点。
请参阅页面:AWT故障排除
它提供了以下调试提示:
要转储AWT组件层次结构,请按Ctrl+Shift+F1。
它还提供了其他有关布局调试的提示,在“布局问题”部分下还有另一部分专门介绍Swing“故障排除”。

2
每个容器(包括所有JComponents)都有一个getLayout()方法,该方法将返回为此组件设置的布局管理器,如果没有设置则返回null(但请记住,许多组件具有默认管理器)。您还可以使用getComponents()返回所持有组件的数组。如果您想查看所有布局管理器,则必须编写递归方法来遍历所有持有的组件,检查它们是否继承自Container,然后调用上述方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接