gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:21:40 25 4
gpt4 key购买 nike

我必须在 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,因此请使用 Swing 组件。

Label 和 Frame 是 AWT 组件。

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

It works for only "TimesRoman" so why all systemfonts are not working pls help!

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

关于java - Java 中每次鼠标单击都会更改字符串的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49880577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com