gpt4 book ai didi

java - 如何改进 JLabel 的渲染?

转载 作者:行者123 更新时间:2023-11-30 09:47:35 25 4
gpt4 key购买 nike

我正在尝试创建一个快速而肮脏的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com