java上机 第十三周 任务二 设置字体

/* 
* 程序头部注释开始   
* 程序的版权和版本声明部分   
* Copyright (c) 2011, 烟台大学计算机学院学生   
* All rights reserved.   
* 文件名称:设置字体                           
* 作    者:薛广晨                               
* 完成日期:2012  年 11 月  21日   
* 版 本号:x1.0            
   
* 对任务及求解方法的描述部分   
* 输入描述:  
* 问题描述: 编写一个FontFamily类,该类对象获取当前机器可用的全部字体名称。
* 		    编写一个对话框FontDialog,该对话框是模式对话框,采用BorderLayout布局,
* 		    包含一个JComboBox放在北面显示全部字体的名称,包含一个JLabel放在中间,显示字体的效果,
* 		    包含两个按钮放在南面,点击YES,在对话框所依赖的窗口中设置字体的效果,点击Cancle取消。
*        编写一个窗口FrameHaveDialog,该窗口有一个按钮和一个文本区,当单击该按钮时,
* 弹出对话框FontDialog,然后根据用户在对话框下拉列表中选择的为显示文本区中的文本
* 程序输出:   
* 程序头部的注释结束 
*/

 
//FontFamily类
package xue;

import java.awt.GraphicsEnvironment;

public class FontFamily {
	String fontName[];
	public String [] getFontName()
	{  
		GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
	    fontName = ge.getAvailableFontFamilyNames();
	    return fontName;
	}

}

//FontDialog类

package xue;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class FontDialog extends Dialog implements ItemListener,ActionListener{
	FontFamily fontFamily; 
    int fontSize=38;
    String fontName;
    Choice fontNameList;
    JLabel label;
    Font font;
    Button yes,cancel;
    static int YES=1, NO=0;
    int state=-1;
    
    FontDialog(Frame f)
    {
    	super(f);
    	setLayout(new BorderLayout());
    	fontFamily = new FontFamily();
    	fontNameList = new Choice();
    	fontNameList.addItemListener(this);
    	setModal(true);
    	yes = new Button("YES");
    	cancel = new Button("Cancel");
    	yes.addActionListener(this);
    	cancel.addActionListener(this);
    	label = new JLabel("hello,奥运", JLabel.CENTER);
    	String[] names = fontFamily.getFontName();
    	for(int i = 0; i < names.length; i++)
    	{
    		fontNameList.add(names[i]);
    	}
    	
    	add(fontNameList, BorderLayout.NORTH);
    	add(label, BorderLayout.CENTER);
    	Panel pSouth = new Panel();
    	pSouth.add(yes);
    	pSouth.add(cancel);
    	add(pSouth, BorderLayout.SOUTH);
    	setBounds(100,100,280,170);
    	
    	addWindowListener(new WindowAdapter() {
    		public void windowClosing(WindowEvent e)
    		{
    			state=NO; 
                setVisible(false);

    		}
		});
    	validate();
    }

	public void itemStateChanged(ItemEvent e) {
		fontName = (String)fontNameList.getSelectedItem();
		font = new Font(fontName, Font.BOLD, fontSize);
		label.setFont(font);
		label.repaint();
		validate();
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==yes) 
	      {   state=YES;  
	          setVisible(false);
	      }
	      else if(e.getSource()==cancel)
	      {  state=NO;  
	         setVisible(false); 
	      }

	}
	
	public int getState()
    {  
		return state;
    }
    public Font getFont()
    {  
    	return font;
    }

}


//FrameHaveDialog类

package xue;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FrameHaveDialog  extends Frame implements ActionListener{
	JTextArea text;
	Button buttonFont;
	FrameHaveDialog() 
	{ 
		buttonFont = new Button("设置字体"); 
	    text = new JTextArea("Java 2实用教程(第三版)");
	    buttonFont.addActionListener(this);
	    add(buttonFont, BorderLayout.NORTH);
	    add(text);
	    setBounds(60,60,300,300);
	    setVisible(true);
	    validate();
	    addWindowListener(new WindowAdapter()
	    { 
	    	public void windowClosing(WindowEvent e)
	    	{ 
	    		System.exit(0);
	        }
	    });
	}
	    public void actionPerformed(ActionEvent e)
	    {  
	    	if(e.getSource() == buttonFont)
	        {  
	    		FontDialog dialog = new FontDialog(this);
	    		dialog.setVisible(true);
	    		dialog.setTitle("字体对话框");
		        if(dialog.getState() == FontDialog.YES)
		        { 
		        	text.repaint();
		        	text.setFont(dialog.getFont());
		           
		        }
	            if(dialog.getState() == FontDialog.NO)
	            { 
	            	text.repaint();
	            }        
	         }
	   }
}


//测试类FrameHaveDialogTest

package xue;

public class FrameHaveDialogTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 new FrameHaveDialog();

	}

}


运行结果:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值