java - 如何改进 JLabel 的渲染?

标签 java swing

我正在尝试创建一个快速而肮脏的 Swing UI。我的 UI 有几个 JTextFields,然后是 JScrollPane 中的 JTextArea,因为 JTextArea 的内容可能会变大。

我正在使用一个简单的 BoxLayout,我不想在 GridBagLayout 上浪费时间。

我的问题是,当我调整窗口大小时,JLabel 变得很大。他们将在大量空白空间中放置一行文本。它看起来很丑而且很浪费。另一方面,JTextArea 永远不会增加大小,因为 JScrollPane 会处理额外的内容。所以我将在滚动 Pane 中有巨大的 JTextFields 和一个很小的 ​​JTextArea,几乎看不到一行。

有没有一种简单的方法可以确保 JTextFields 的高度不会超过一行文本?也许覆盖 getMaximumSize/getPreferredSize ?如果是这样,代码是什么?

唯一可以解决这种情况的函数是 JFrame.pack(),但它会改变窗口大小(非常不受欢迎)并且有时不会费心将自己限制在桌面上。

最佳答案

label.setMaximumSize( label.getPreferredSize() );

或者更好的是,覆盖 getMaximumSize() 方法以返回首选大小。

实际上,我收回了这个建议,因为标签的最大尺寸是首选尺寸。但是,这是一种适用于其他组件的技术,例如在使用 BoxLayout 时使用 JTextField。

发布您的 SSCCE这说明了问题。

编辑:

实际上我认为问题是当有额外空间时,BoxLayout 会尝试增加所有组件的高度。要解决这个问题,您需要使用:

panel.add( Box.createVerticalGlue() );

作为最后一个组件,以防止额外的空间被分配给组件。

关于java - 如何改进 JLabel 的渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619217/

相关文章:

java - 从 JList Java Swing 中删除元素

java - 如何在WebSphere中创建共享库来共享jar文件

java - 如何在 selenium 中运行代码以在 python 脚本而不是 cron 中的一天中的特定时间执行函数

java - 如何将可点击的文本插入到 JTextPane 中?

java - 更改后我应该重画GUI吗?

Java Swing JTree 扩展

java - 我希望按下 JButton 后出现 JLabel

java - 如何组织一个 Swing GUI 应用程序?

java - 在计划模式下执行bat文件(java程序)后命令提示符未退出

Java:实现 MutableTreeNode,删除类似的旧方法?