永发信息网

Java时钟程序中字体问题

答案:2  悬赏:40  手机版
解决时间 2021-03-23 13:44
Java时钟程序中字体问题
最佳答案
解决方法:
在public void paint(Graphics g)方法的第一行加上
super.paint(g);
修改后的结果:
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.*;
public class Show extends JFrame
{
private JButton btnAdd=new JButton("添加内部窗体");
private JDesktopPane desktopPane=new JDesktopPane();
private int windowCount=1;
public Show()
{
setTitle("桌面窗格和内部窗体测试");
setSize(500,500);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
dispose();
System.exit(0);
}
});
Container contentPane=getContentPane();
contentPane.add(btnAdd,BorderLayout.NORTH);
contentPane.add(desktopPane,BorderLayout.CENTER);
desktopPane.setLayout(new FlowLayout());
btnAdd.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
S s=new S();
s.setPreferredSize(new Dimension(250,100));
desktopPane.add(s);
s.show();
desktopPane.revalidate();
}
});
}
public class S extends JInternalFrame implements Runnable{
Thread clock;
public S(){
super("数字时钟"); //调用父类构造函数
Font type = new Font("Times New Roman",Font.BOLD,60); //设置时钟的显示字体
setFont(type);
start(); //开始进程
setSize(280,100); //设置窗口尺寸
//setUndecorated(true); // 去掉窗口的装饰
}
public void start(){ //开始进程
if (clock==null){ //如果进程为空值
clock=new Thread(this); //实例化进程
clock.start(); //开始进程
}
}
public void run(){ //运行进程
while (clock!=null){
repaint(); //调用paint方法重绘界面
try{
Thread.sleep(1000); //线程暂停一秒(1000毫秒)
}
catch (InterruptedException ex){
ex.printStackTrace(); //输出出错信息
}
}
}
public void stop(){ //停止进程
clock=null;
}
public void paint(Graphics g){ //重载组件的paint方法
super.paint(g);
Graphics2D g2=(Graphics2D)g; //得到Graphics2D对象
Calendar now=new GregorianCalendar(); //实例化日历对象
String timeInfo=""; //输出信息
int hour=now.get(Calendar.HOUR_OF_DAY); //得到小时数
int minute=now.get(Calendar.MINUTE); //得到分数
int second=now.get(Calendar.SECOND); //得到秒数
if (hour<=9)
timeInfo+="0"+hour+":"; //格式化输出
else
timeInfo+=hour+":";
if (minute<=9)
timeInfo+="0"+minute+":";
else
timeInfo+=minute+":";
if (second<=9)
timeInfo+="0"+second;
else
timeInfo+=second;
g.setColor(Color.white); //设置当前颜色为白色
Dimension dim=getSize(); //得到窗口尺寸
g.fillRect(0,0,dim.width,dim.height); //填充背景色为白色
g.setColor(Color.blue); //设置当前颜色为蓝色
g.drawString(timeInfo,20,80); //显示时间字符串
}
}
public static void main(String[] args)
{
(new Show()).show();
}
}
全部回答
是repaint造成的,因为使用repaint()函数其实是自动调用paint函数,而你在paint函数中并没用定义字体,所以原来的字体就被替换成默认的了,改正的方法就是在paint函数中也定义使用同样的字体
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有一则关于饮料的广告词是:“口服,心服!”
资产类账户有哪些,固定资产清理什么?属于资
毛坯房 有很多昆虫尸体 会不会不好
墨玉县叶夏利加油站在哪里啊,我有事要去这个
重庆大学法学院院长是什么级别的官绩
听哥们说的,他认识一朋友(男)被骗入传销组
舜这个字怎么读
时钟8小时敲8下用时14秒12时敲12下用时多少秒
富家千金和公子视频流出,女孩真心漂亮,草的
在自己的土地使用权范围之内建房,但是没有房
关于dnf月光酒馆的地板是用什么做的?不管砸
师范生学校评语怎么写,助学金学校审核意见怎
对“勇于义而果于德,不以贫富贵贱死生动其心
我在淘宝网买东西,下了订单付了款,卖家六天
奥汀的祝福君子以泽,形容君子的古诗词
推荐资讯
jack jones的兄弟名牌是什么
现有一CuO样品,加入适量稀硫酸,搅拌,使其
草原连在什么地方啊,我要过去处理事情
(16分)阅读材料,完成下列要求。材料一据国
坤泰电缆电线地址在哪,我要去那里办事
小学一年级下册语文 用什么叠词形容天空
知识大集结语文55页的九字成语
单选题价格变化会引起需求量的变动,但不同商
防火阀接线套什么定额
醴陵市株洲小天鹅专柜怎么去啊,谁知道地址啊
哪有卖披萨的
上海市中骅国际物流公司工资多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?