Java 更改JLabel部分的字体?

Java 更改JLabel部分的字体?,java,swing,user-interface,fonts,jlabel,Java,Swing,User Interface,Fonts,Jlabel,我只想将JLabel的前两个单词更改为与JLabel其余部分不同的字体。我发现我可以制作一个JPanel,并且有两个不同字体的JLabel。我不能使用这种方式,因为我只能有一个JLabel这是因为我有一个鼠标侦听器,它根据不同的其他JLabel的入口或出口来更改该JLabel的文本,这些JLabel位于单独的JPanel中。有办法吗?我尝试过将一个JLabel并排添加到另一个JLabel: JLabel Giraffesays = new JLabel("Giraffe says:");

我只想将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 JComponent支持HTML,因此您可以简单地使用字体标记来更改文本的外观。
两种方法是:

使用两个单独的jlabel JComponent支持HTML,因此您可以简单地使用字体标记来更改文本的外观。 尝试将HTML字符串与JLabel一起使用:

这是有错误的那一行

问题是您需要转义引号size=\6\。

尝试将HTML字符串与JLabel一起使用:

这是有错误的那一行


问题是您需要转义引号size=\6\。

我将使用两个并排添加的JLabel,以获得最简单的解决方案。您声明:我不能使用这种方式,因为我只能有一个JLabel这是因为我有一个鼠标侦听器,它根据不同其他JLabel的入口或出口来更改该JLabel的文本,这些JLabel位于单独的JPanel中-这似乎是一个错误的原因。你能解释一下为什么这会阻止你这么做吗?如果你需要多种文本格式,你可以选择html字符串作为JLabel,或者JTextPane@HovercraftFullOfEels我必须在每个鼠标侦听器的主面板中更改每个JFrame的两个字符串,我有很多。另外,由于我的JLabel在整个代码中使用了无数次,因此更改它也意味着更改我的整个代码。而不是这样做,我希望能够设置不同字体的文本。ThanksA简单的setter方法可以很容易地解决这个问题。除非您希望将显示类型更改为JTextPane,或者按照@Arvind明智的建议使用HTML。我将使用两个并排添加的JLabel,以获得最简单的解决方案。您声明:我不能使用这种方式,因为我只能有一个JLabel这是因为我有一个鼠标侦听器,它根据不同其他JLabel的入口或出口来更改该JLabel的文本,这些JLabel位于单独的JPanel中-这似乎是一个错误的原因。你能解释一下为什么这会阻止你这么做吗?如果你需要多种文本格式,你可以选择html字符串作为JLabel,或者JTextPane@HovercraftFullOfEels我必须在每个鼠标侦听器的主面板中更改每个JFrame的两个字符串,我有很多。另外,由于我的JLabel在整个代码中使用了无数次,因此更改它也意味着更改我的整个代码。而不是这样做,我希望能够设置不同字体的文本。ThanksA简单的setter方法可以很容易地解决这个问题。除非您希望将显示类型更改为JTextPane,或者按照@Arvind明智的建议使用HTML。在尝试使用HTML方式之后,我尝试了以下方法:->String giraffesay=Giraffe says:;我的字体大小是6,我不知道为什么。我对使用HTML和java非常陌生,所以我想知道您是否能帮我?:->赋值的左侧必须是变量->我理解这一点,但即使左侧在我声明后不是变量,它难道不应该工作吗?谢谢,我将在下一行发布完整的代码!字符串长颈鹿说=长颈鹿说:;下一行status.settextgiraffe说+你好@Rich这不是HTML的问题。如果这是代码的精确复制粘贴,则至少不是。这部分:应该是,否则6将不会被解释为字符串的一部分。虽然你没有被评为最佳答案,但我感谢你没有给出你的答案。非常感谢!在尝试用HTML方式完成之后,我尝试了以下方法:->String giraffesays=giraffesays:;我的字体大小是6,我不知道为什么。我对使用HTML和java非常陌生,所以我想知道您是否能帮我?:->赋值的左侧必须是变量->我理解这一点,但即使左侧在我声明后不是变量,它难道不应该工作吗?谢谢,我将在下一行发布完整的代码!字符串长颈鹿说=长颈鹿说:;下一行status.settextgiraffe说+你好@Rich这不是HTML的问题。如果这是代码的精确复制粘贴,则至少不是。这部分:应该是,否则6将不会被解释为字符串的一部分。虽然你没有被评为最佳答案,但我感谢你没有给出你的答案。非常感谢!在试着用H
TML的方式,我试过:->字符串长颈鹿说=长颈鹿说:;我的字体大小是6,我不知道为什么。我对使用HTML和java非常陌生,所以我想知道您是否能帮我?:->赋值的左侧必须是变量->我理解这一点,但即使左侧在我声明后不是变量,它难道不应该工作吗?谢天谢地长颈鹿说:;下一行status.settextgiraffe说+你好@里奇,你好!需要用包装,也使用样式属性而不是字体标记。为什么我需要这样做?文本你好!与其他html文本无关。。?同样,在这样做之后,同样的错误也存在。这是我的字体大小的问题,我想…?这是一行错误字符串giraffsays=Giraffe says:;在尝试用HTML方式完成之后,我尝试了以下方法:->String giraffesays=giraffesays:;我的字体大小是6,我不知道为什么。我对使用HTML和java非常陌生,所以我想知道您是否能帮我?:->赋值的左侧必须是变量->我理解这一点,但即使左侧在我声明后不是变量,它难道不应该工作吗?谢天谢地长颈鹿说:;下一行status.settextgiraffe说+你好@里奇,你好!需要用包装,也使用样式属性而不是字体标记。为什么我需要这样做?文本你好!与其他html文本无关。。?同样,在这样做之后,同样的错误也存在。这是我的字体大小的问题,我想…?这是一行错误字符串giraffsays=Giraffe says:;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable(){
      @Override public void run() {
        JFrame frm = new JFrame("Text formatting");
        frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        String giraffesays = "<html><span style=\"font-family:Arial;font-size:13px;\">Giraffe says :</span>Hi there!</html>";
        frm.getContentPane().add(new JLabel(giraffesays));
        frm.pack();
        frm.setLocationByPlatform(true);
        frm.setVisible(true);
      }
    });
  }
}
String giraffesays = "<html><font size="6"><span style=\"font-family:Arial;\">Giraffe says :</font></span></html>";