Java--第13周实验--任务2--编写一个FontFamily类,该类对象获取当前机器可用的全部字体名称,编写一个对话框FontDialog,该对话框是模式对话框,采用BorderLayout布局

Test类:

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

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new FrameHaveDialog();
	}

}


 

 

Mypanel类:

package task_two;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Mypanel extends Panel {

	JButton button1,button2;
	public Mypanel(){
		button1 = new JButton("Yes");
		button2 = new JButton("Cancle");
		add(button1);
		add(button2);
	}
}


 

 

FrameHaveDialog类:

package task_two;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusListener;

import javax.swing.*;

//该窗口有一个按钮和一个文本区,当单击该按钮时,弹出对话框FontDialog.
//然后根据用户在对话框下拉列表中选择的为显示文本区中的文本。最后编写一个程序执行入口进行测试。
public class FrameHaveDialog extends JFrame implements ActionListener{
	JTextArea text1;
	JButton button;
	FontDialog dialog;
	public FrameHaveDialog(){
		text1 = new JTextArea(6,15);
		button = new JButton("打开对话框");
		add(text1);
		add(button);
		button.addActionListener(this);
		dialog = new FontDialog(this,"修改字体对话框",true);
		setLayout(new FlowLayout());
		setBounds(200, 200, 200, 200);
		setVisible(true);
	}

	public void actionPerformed(ActionEvent e) {
		//int index = dialog.list.getSelectedIndex();
		//text1.setFont(new Font((String) dialog.list.getItemAt(index),Font.PLAIN,12));
		dialog.setVisible(true);
		if(dialog.panel.button1.hasFocus()==true)
		{
			
		int index = dialog.list.getSelectedIndex();
		text1.setFont(new Font((String) dialog.list.getItemAt(index),Font.PLAIN,dialog.list.getFont().getSize()));
		}
		
	}
}


 

 

FontFamily类:

package task_two;

import java.awt.GraphicsEnvironment;

//编写一个FontFamily类,该类对象获取当前机器可用的全部字体名称。
public class FontFamily {
	public String[]  getfont(){
	GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
	String[] fontName = e.getAvailableFontFamilyNames();
	return fontName;
	}
}


 

 

 

FontDialog类:

package task_two;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;

//编写一个对话框FontDialog,该对话框是模式对话框,采用BorderLayout布局.
//包含一个JComboBox放在北面显示全部字体的名称,包含一个JLabel放在中间,显示字体的效果,包含两个按钮放在南面.
//点击YES,在对话框所依赖的窗口中设置字体的效果,点击Cancle取消。
public class FontDialog extends JDialog implements ItemListener, ActionListener{
	JComboBox list;
	JLabel lable;
	Mypanel panel;
	public FontDialog(JFrame f, String s, boolean b) {
		super(f, s, b);
		panel = new Mypanel();
		list = new JComboBox();
		lable = new JLabel("字体的效果");
		FontFamily fontFamily = new FontFamily();
		String[] s1 = fontFamily.getfont();
		for (int i = 0; i < s1.length; i++) {
			list.addItem(s1[i]);
		}
		
		add(list,BorderLayout.NORTH);
		add(lable,BorderLayout.CENTER);
		add(panel,BorderLayout.SOUTH);
		list.addItemListener(this);
		panel.button1.addActionListener(this);
		panel.button2.addActionListener(this);
		setBounds(380, 380, 380, 380);
	}

	
	public void itemStateChanged(ItemEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==list)
		{
			String name = (String)list.getSelectedItem();
			//UIManager.put("Label.font", new Font(name,Font.BOLD,12));
			//System.out.print(list.getItemAt(6));
			lable.setFont(new Font(name,Font.PLAIN,list.getFont().getSize()));
		}
		
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==panel.button1)
		{
			//int i = list.getSelectedIndex();
			//FrameHaveDialog frameHaveDialog = new FrameHaveDialog();
			//int index = list.getSelectedIndex();
			//lable.setFont(new Font((String) list.getItemAt(index),Font.PLAIN,list.getFont().getSize()));
			//System.out.print(0);
			setVisible(false);
			//System.exit(0);
		}
		else if(e.getSource()==panel.button2)
		{
			//System.out.print(1);
			setVisible(false);
			//System.exit(0);
		}
		
	}



}


 

 

运行结果:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leihengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值