设置JLabel的宽度并在悬停时添加工具提示

时间:2013-06-26 07:56:29

标签: java swing user-interface jlabel

我有JLabel内容未知,我有两件事我想做:

  • 我想设置标签的最大宽度甚至是静态宽度。如果文字比标签大,那么它会缩短它,如下所示:
  

Verylonglabel

变为

  

Veryl

在gui中对组件使用静态宽度是不是一个坏主意?如果是这样的话,那么替代方案是什么?请给我建议!

  • 当您将鼠标悬停在标签上时,我想要一个带有全长字符串的工具提示。因此,在我们的情况下,如果我将鼠标悬停在标有“Veryl”的标签上,则会出现显示“Verylonglabel”的工具提示。但是,它应显示带有全长字符串的工具提示,即使它没有缩短。

非常感谢您对这两种方面的帮助。

到目前为止,我只是搞砸了一下,并尝试了这样的事情而没有成功。它似乎根本不关心大小。

JLabel label = new JLabel("Verylonglabel");     
label.setSize(15, 5);

最好的问候,Goatcat

3 个答案:

答案 0 :(得分:5)

JLabel的大小由父容器的LayoutManager决定。有关详细信息,请参阅the tutorial

请注意,JLabel已经有您要查找的行为

  1. 当文字太长时,截止的文字将被“......”取代。因此,在您的示例中,“Verylonglabel”将被替换为例如“Verylo ...”
  2. 您可以使用setToolTipText方法指定工具提示,将鼠标悬停在JLabel
  3. 上方时显示

答案 1 :(得分:1)

这就是您所需要的:

JLabel label = new JLabel("Verylonglabel");

// Create tool tip.
label.setToolTipText(label2.getText());

// Set the size of the label
label.setPreferredSize(new Dimension(80,40));// Width, Height

答案 2 :(得分:0)

setMaximumSize只有在您使用的LayoutManager尊重组件的所需/最大尺寸时才有效。您可能希望将BoxLayout视为LayoutManager。与其他几个Swing LayoutManagers不同,BoxLayout尊重其组件的大小设置。

这仍然会让您知道要设置为最大尺寸的尺寸。宽度将是您定位的固定值,但高度应足够大,无论使用何种字体。这是我用来使高度灵活但宽度固定为50像素的代码:

label.setMaximumSize(new Dimension(10000, 50));

最后,工具提示将显示完整的标签文本,其中包含以下行:

label.setToolTipText(labelText);