在 Java 中每次单击鼠标都会更改字符串的字体

Posted

技术标签:

【中文标题】在 Java 中每次单击鼠标都会更改字符串的字体【英文标题】:Changing font of the string with every mouse click in Java 【发布时间】:2018-09-27 13:35:51 【问题描述】:

我必须在 java AWT 中每次鼠标点击时更改字符串的大小和字体。

首先,我将系统中的所有可用字体放入一个数组中,但它不起作用。这背后的原因是什么,我哪里错了?

在下面的代码中,每次鼠标点击都会增加字体大小,但字体不会改变!

import java.awt.*;
import java.awt.event.*;
import java.awt.Font;
class JavaFont extends Frame implements MouseListener 
    int size=20;
    Label l1;
    Font  font;
    int i=0;
    int j=0;
    String fonts[] = 
 GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

    JavaFont()
    
        System.out.println(fonts.length);
        setSize(500,500);
        setVisible(true);
        font=new Font(fonts[i],Font.BOLD,size);
        l1=new Label("ABC",Label.CENTER);
        l1.setFont(font);
        add(l1,BorderLayout.NORTH);
        addMouseListener(this);
    
    public void mousePressed(MouseEvent me)
    

    
    public void mouseClicked(MouseEvent me)
    
        if(i<fonts.length)
        
        i++;
        size=size+2;
        l1.setText("ABC12");
        font=new Font(fonts[i],Font.BOLD,size);
        l1.setFont(font);
        
        else
        
            i=0;
        

    
    public void mouseEntered(MouseEvent me)
    

    
    public void mouseExited(MouseEvent me)
    

    
    public void mouseReleased(MouseEvent me)
    

    
    public static void main(String args[])
    
        new JavaFont();
    

但是当我以这种方式使用字体时,它可以工作

font=new Font("TimesRoman",Font.BOLD,size);

它仅适用于“TimesRoman”,所以为什么所有系统字体都不起作用。

【问题讨论】:

如果标签是(基于 Swing 的)JLabel,它可以工作。这并没有直接回答您的问题,而是提出了一个新问题。为什么要使用 AWT?请参阅 this answer 了解放弃 AWT 组件以支持 Swing 的许多充分理由。 是的,我知道 AWT 没有被使用,但它是我大学实践中的一个程序 因此我使用 AWT “我的大学” 嗯,这很难。如果他们不从 16 年前被取代的技术中更新,我最好的建议是改变大学。大多数可能对此提供帮助的人即使对其进行调查也不会被打扰。 @AndrewThompson 亲爱的,大多数平台仍在使用 AWT 和旧的 java 1.3 版本。我们目前正在为一个大客户使用它。我们需要答案而不是借口。 【参考方案1】:

你的问题用 Swing 标记,所以使用 Swing 组件。

标签和框架是 AWT 组件。

对于 Swing,您应该使用 JLabelJFrame 以及 Font 将按预期更改。

它仅适用于“TimesRoman”,所以为什么所有系统字体都不起作用请帮忙!

我猜 AWT 只支持某些字体。继续点击。我注意到它也适用于“等宽”。

【讨论】:

抱歉swing标签,但为什么它不适用于awt标签 @RohitSuthar,见编辑。 AWT 已经死了,出于这样的原因,您无论如何都不应该使用它。

以上是关于在 Java 中每次单击鼠标都会更改字符串的字体的主要内容,如果未能解决你的问题,请参考以下文章

word怎样缩小字间距

Java Swing中的鼠标指针问题

PyCharm:如何在不使用鼠标滚动缩放的情况下更改字体大小?

word 能不能将一行改成20个字?

为啥 jQuery 的 .change() 事件只在鼠标右键单击时触发?

word一种样式和格式如何设置两种字体