JLabel强制文本以适合JLabel边界(null布局)

时间:2014-04-27 17:23:23

标签: java swing jlabel layout-manager null-layout-manager

我正在使用布局设置为null,我有一个具有宽高比的JFrame,并且在调整大小期间,此帧保持相同的宽高比。

每当我调整框架大小时,我都会调整所有组件的大小,而不会出现任何与JLabel一样的问题。

当我调整JLabel的边界大小时,文本不会增加以适应新的边界,文本保持相同的大小。

我试图通过设置每次字体大小来解决问题,但似乎很难。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用可以保持宽高比的特定布局?如Gri​​dbagLayout? 使用适当的布局,如GridBagLayout或SpringLayout

例如: Container contentPane = jframe.getContentPane(); contentPane.setLayout(new GridBagLayout());

// x y w h wtx wty锚填充T L B R padx pady contentPane.add(myPanel,new GridBagConstraints(0,0,1,1,0.0,0.0,GridBagConstraints.WEST,GridBagConstraints.BOTH,new Insets(10,10,10,5),0,0)); contentPane.add(myPanel2,new GridBagConstraints(1,0,1,1,0.0,0.0,GridBagConstraints.EAST,GridBagConstraints.BOTH,new Insets(10,5,10,10),0,0));

您还希望扩展标签等。嗯,我不知道会自动为你做什么。您可以扩展一些组件以从布局中获取提示并适当调整大小。例如,当您确定由于窗口大小而可用的更多空白区域时,您可以选择放大字体。我不知道会对标签执行此操作的现有组件。为了做到这一点,比例字体有点棘手。实际上,如果记忆能为我服务,我曾做过类似的事情。这就像"试错"亲语法。在屏幕外,我会以估计的字体大小绘制字符串并重新向下绘制,直到它适合具有所需边距的分配空间。当然看起来很难让这些动态标签看起来很好看!