【发布时间】:2015-08-30 23:35:40
【问题描述】:
我想仅将 JLabel 的前两个单词更改为与 JLabel 其余部分不同的字体。我发现我可以制作一个 JPanel,并在其中有两个不同字体的 JLabel。我不能使用这种方式,因为我只能有一个 JLabel(这是因为我有一个鼠标侦听器,它根据不同的其他 JLabel 的入口或出口更改该 JLabel 的文本,这些 JLabel 位于单独的 JPanel 中)。有什么办法吗?我试过这个(将一个 JLabel 并排添加到另一个 JLabel):
JLabel Giraffesays = new JLabel("Giraffe says:");
Giraffesays.setFont(new Font("TimesRoman", Font.BOLD, 60));
status.setText(Giraffesays +"Hi!"); //status is a JLabel
但这没有用。我也试过把它变成一个字符串:
String Giraffesays = "Giraffe says:
Giraffesays.setFont(new Font("TimesRoman", Font.BOLD, 60));
status.setText(Giraffesays +"Hi!"); //status is a JLabel
但是你不能改变字符串的字体...
【问题讨论】:
-
我会使用并排添加的两个 JLabel 以获得最简单的解决方案。你说:
" I cannot use this way, because I can only have one JLabel (This is since I have a mouse listener which changes the text of that JLabel based on entrance or exit of different other JLabels, which are in a seperate JPanel)"——这似乎是一个错误的理由。你能解释一下为什么这会阻止你这样做吗? -
如果您需要多种文本格式,可能您可以选择
html string用于JLabel,或JTextPane -
@HovercraftFullOfEels 我必须在每个鼠标侦听器的主面板中更改每个 JFrame 的两个字符串,我有很多。此外,由于我的 JLabel 在整个代码中使用了无数次,因此更改它也意味着更改我的整个代码。我不想这样做,而是希望能够在其中设置具有不同字体的文本。谢谢
-
几个简单的setter方法可以轻松解决这个问题。除非您希望将显示类型更改为 JTextPane 或按照@Arvind 明智的建议使用 HTML。
标签: java swing user-interface fonts jlabel