【发布时间】:2011-12-15 21:13:56
【问题描述】:
我需要在JPanel 中显示单个组件,并且我希望始终将该组件保留在右下角。我试着用 GridBagLayout 来做:
val infoArea = new TextArea {
text = "Hello!"
border = Swing.EmptyBorder(30)
background = Color.RED
editable = false
}
val p = new JPanel
p.setLayout(new GridBagLayout)
val c = new GridBagConstraints
c.gridx = 0
c.gridy = 0
c.anchor = GridBagConstraints.LAST_LINE_END
p.add(infoArea.peer,c)
val f = new JFrame
f.setContentPane(p)
f.setVisible(true)
但由于某种原因,文本区域位于中心:
我在这里做错了什么?
【问题讨论】:
-
您还没有阅读代码中出现的 GridBagLayout 教程(仅添加一个组件而不添加一些虚拟组件来填充 JPanel,放置 gridx 和 gridy 0,而不是设置所有相关的 GridBagConstraints。 ..),如果不先学习,你不能指望任何如此复杂的事情都能奏效。无论如何,我会使用嵌套的 JPanel,使用更简单的布局,例如 BorderLayouts。
-
@HovercraftFullOfEels - 我希望只有一个单元格,并且组件放置在右下角(通过设置锚约束)。还有哪些其他相关限制?
-
weightx,对一个来说很重,但无论如何,如果您只添加一个组件,则无法使用 GridBagLayout 完成。同样,嵌套 JPanel 每个都有自己的布局。同样,BorderLayout 会很好用。
-
...可以使用 GridBagLayout 来完成 :)
标签: java swing user-interface scala layout