java - 更改 JLabel 的一部分的字体?

标签 java swing user-interface fonts jlabel

我想将 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

但是你不能改变字符串的字体...

最佳答案

尝试将 HTML StringJLabel 一起使用:

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);
      }
    });
  }
}

enter image description here

This is the line with the error

String giraffesays = "<html><font size="6"><span style=\"font-family:Arial;\">Giraffe says :</font></span></html>";

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

关于java - 更改 JLabel 的一部分的字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32302214/

相关文章:

java - 在 30 秒内处理来自 FTP 服务器的 100 MB 以上文件?

java - 单击按钮更改 jpanel 的背景和字体颜色

java - 我如何使变量获取行数据

java - 处理 JPopupMenu 关闭

javascript - jQuery 自动完成 - 结果链接

java - SpringMVC 返回带有 JSON 的对象列表

java - OS.10 Yosemite 上的 Ant 和 Java

java - Java 线程中的内存顺序和可见性

带有 x 和 y 坐标的 Javafx Pane

python - Tkinter 从正在运行的程序中删除按钮