在 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,您应该使用 JLabel
和 JFrame
以及
Font
将按预期更改。
它仅适用于“TimesRoman”,所以为什么所有系统字体都不起作用请帮忙!
我猜 AWT 只支持某些字体。继续点击。我注意到它也适用于“等宽”。
【讨论】:
抱歉swing标签,但为什么它不适用于awt标签 @RohitSuthar,见编辑。 AWT 已经死了,出于这样的原因,您无论如何都不应该使用它。以上是关于在 Java 中每次单击鼠标都会更改字符串的字体的主要内容,如果未能解决你的问题,请参考以下文章
PyCharm:如何在不使用鼠标滚动缩放的情况下更改字体大小?