3

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

  • 我想设置标签的最大甚至静态宽度。如果文本比标签大,它会简单地缩短它,如下所示:

很长的标签

变成

非常

在 gui 中的组件上使用静态宽度是一个坏主意吗?如果是这种情况,有什么替代方案?请给我建议!

  • 当您将鼠标悬停在标签上时,我希望出现一个带有全长字符串的工具提示。所以在我们的例子中,如果我将鼠标悬停在“Veryl”标签上,就会出现一个显示“Verylonglabel”的工具提示。但是,它应该显示带有完整长度字符串的工具提示,即使它没有被缩短。

非常感谢您对其中任何一个的帮助。

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

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

最好的问候,山羊猫

4

3 回答 3

5

您的大小JLabelLayoutManager父容器的大小决定。有关更多信息,请参阅教程

请注意,JLabel已经具有您正在寻找的行为

  1. 当文本太长时,被截断的文本将被替换为 "..." 。因此,在您的示例中,“Verylonglabel”将被替换为“Verylo ...”
  2. 您可以使用该setToolTipText方法指定工具提示,将鼠标悬停在JLabel
于 2013-06-26T08:02:41.370 回答
2

这就是你需要的:

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
于 2013-06-26T11:06:25.110 回答
0

setMaximumSizeLayoutManager仅当您使用尊重组件的期望/最大尺寸时才会有效。您可能想BoxLayoutLayoutManager. 与其他几个 Swing LayoutManager 不同,BoxLayout它尊重其组件的大小设置。

这仍然给您留下了将什么尺寸设置为最大尺寸的问题。宽度将是您作为固定值的目标,但高度应该足够大以适应所使用的任何字体。这是我用来使高度灵活但宽度固定为 50 像素的代码:

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

最后,工具提示将显示完整的标签文本,如下所示:

label.setToolTipText(labelText);
于 2013-06-26T16:22:26.397 回答