【发布时间】: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 版本。我们目前正在为一个大客户使用它。我们需要答案而不是借口。
标签: java swing fonts awt mouseevent