⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fontdialog.java

📁 Java版记事本 作者:黎明你好 版本:2.0 基本功能: 1.文件的打开
💻 JAVA
字号:
package notepad.popGUI;

import java.awt.Color;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

/**
 * 类名FontDialog<BR>
 * 设置字体的对话框类,用于设置字体。<BR>
 * 
 * @version 2.0 2009-4-27<BR>
 * 
 * @author 黎明你好
 */
public class FontDialog extends JDialog implements ListSelectionListener,
		ActionListener
{
	/** 序列化时为了保持版本的兼容性 */
	private static final long serialVersionUID = 1L;
	/** 标签:字体,字形,大小 */
	JLabel fontName_label, fontForm_label, fontSize_label;
	/** 文本框:字体,字形,大小 */
	JTextField fontName_field, fontFrom_field, fontSize_field;
	/** 列表:字体,字形,大小 */
	JList fontName_list, fontForm_list, fontSize_list;
	/** 示例显示文字的标签 */
	JLabel shili_label, showString_label;
	/**布局用的panel*/
	JPanel panel;
	/**确定、不小、颜色按钮*/
	JButton buttonApprove, buttonCancel, buttonColor;
	/** 字形名称列表数组 */
	String form[] = { "常规", "斜体", "粗体", "斜粗体" };
	/** 字的大小列表数组 */
	String size[] = { "8", "9", "10", "11", "12", "14", "16", "18", "20", "22",
			"24", "26", "28", "36", "48", "72" };
	/** 默认字体 */
	String fontName = "宋体";
	/** 默认字形 */
	int fontForm = Font.PLAIN;
	/** 默认大小 */
	int fontSize = 20;
	/**表示字体是否需要更改,也就是点的确定还是取消*/
	boolean isFontChange = false;
	/** 最后要返回结果的字体对象 */
	Font resultFont = null;
	/** 字颜色,也是需要返回得,默认位黑色 */
	Color resultFontColor = Color.BLACK;

	/**
	 * 类的构造方法
	 * 
	 * @param frame -
	 *            JFrame 用来确定这个对话框是基于谁显示的
	 */
	public FontDialog(JFrame parent)
	{
		super(parent, "字体", true);
		resultFont = new Font(fontName, fontForm, fontSize);// 根据指定名称、样式和磅值大小,创建一个新
		/* Font,默认"的宋体,普通,20"*/
		panel = new JPanel();
		showString_label = new JLabel("黎明中文软件");
		shili_label = new JLabel("示例");
		buttonApprove = new JButton("确定");
		buttonCancel = new JButton("取消");
		buttonColor = new JButton("颜色");
		fontName_label = new JLabel("字体");
		fontForm_label = new JLabel("字形");
		fontSize_label = new JLabel("大小");
		fontName_field = new JTextField(fontName, 15);
		fontFrom_field = new JTextField("常规", 12);
		fontSize_field = new JTextField("20", 5);

		GraphicsEnvironment ge = GraphicsEnvironment
				.getLocalGraphicsEnvironment();
		fontName_list = new JList(ge.getAvailableFontFamilyNames());// 得到当前系统的字体数组
		fontForm_list = new JList(form);
		fontSize_list = new JList(size);

		JScrollPane jspFont = new JScrollPane(fontName_list);// 滚动条
		JScrollPane jspForm = new JScrollPane(fontForm_list);
		JScrollPane jspSize = new JScrollPane(fontSize_list);

		// 设置演示文字参数,要求文字居中,背景颜色为白色
		showString_label.setFont(resultFont);
		showString_label.setHorizontalAlignment(JLabel.CENTER);
		showString_label.setBackground(Color.WHITE);
		showString_label.setOpaque(true);// 绘制其边界内的所有像素,可以使背景颜色显示出来

		// 设置列表相关属性
		fontName_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置列表的选择模式,一次只能选择一个列表索引
		fontForm_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		fontSize_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		fontName_list.setVisibleRowCount(7);// 设置列表可见行数为7行
		fontForm_list.setVisibleRowCount(7);
		fontSize_list.setVisibleRowCount(7);
		fontName_list.addListSelectionListener(this);// 将侦听器添加到列表,每次选择发生更改时将获得通知;
		fontForm_list.addListSelectionListener(this);
		fontSize_list.addListSelectionListener(this);

		buttonApprove.addActionListener(this);// /添加按钮的监听器
		buttonCancel.addActionListener(this);
		buttonColor.addActionListener(this);
		fontSize_field.addActionListener(this);

		// 添加各个组件,用的空布局,能好看点
		this.setLayout(null);// 空布局
		this.add(fontName_label);// 添加设置字体的组件
		this.add(fontName_field);
		this.add(jspFont);

		fontName_label.setBounds(10, 5, 190, 22);
		fontName_field.setBounds(10, 27, 190, 22);
		jspFont.setBounds(10, 49, 190, 145);

		this.add(fontForm_label);// 添加设置字形的组件
		this.add(fontFrom_field);
		this.add(jspForm);

		fontForm_label.setBounds(210, 5, 140, 22);
		fontFrom_field.setBounds(210, 27, 140, 22);
		jspForm.setBounds(210, 49, 140, 145);

		this.add(fontSize_label);// 添加设置字大小的组件
		this.add(fontSize_field);
		this.add(jspSize);

		fontSize_label.setBounds(360, 5, 50, 22);
		fontSize_field.setBounds(360, 27, 50, 22);
		jspSize.setBounds(360, 49, 50, 145);

		this.add(buttonApprove);// 添加按钮
		this.add(buttonCancel);
		this.add(buttonColor);

		buttonApprove.setBounds(420, 30, 60, 23);
		buttonCancel.setBounds(420, 60, 60, 23);
		buttonColor.setBounds(420, 90, 60, 23);

		this.add(showString_label);// 添加示例标签
		this.add(shili_label);
		shili_label.setForeground(Color.BLUE);
		showString_label.setBounds(100, 230, 300, 70);
		shili_label.setBounds(100, 205, 50, 22);

		// 设置JDialog的属性
		this.setLocationRelativeTo(parent);
		this.setResizable(false);
		this.setBounds(70, 100, 500, 400);
		this.setResizable(false);
		this.validate();
		addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				setVisible(false);
				isFontChange = false;
				dispose();
			}
		});
	}

	/**
	 * 监听器方法,发生操作调用时,用来检测选择
	 */
	public void valueChanged(ListSelectionEvent e)
	{
		if (e.getSource() == fontName_list)
		{
			fontName = fontName_list.getSelectedValue().toString();// 得到选择的字体
			fontName_field.setText(fontName);
		}
		if (e.getSource() == fontForm_list)
		{
			String s = fontForm_list.getSelectedValue().toString();// 得到选择的字形
			fontFrom_field.setText(s);
			if (s.equals("常规"))
				fontForm = Font.PLAIN;
			else if (s.equals("斜体"))
				fontForm = Font.ITALIC;
			else if (s.equals("粗体"))
				fontForm = Font.BOLD;
			else if (s.equals("斜粗体"))
				fontForm = Font.ITALIC + Font.BOLD;
		}
		if (e.getSource() == fontSize_list)
		{
			try
			{
				String s = fontSize_list.getSelectedValue().toString();// 得到选择的字大小
				fontSize_field.setText(s);
				fontSize = Integer.parseInt(s);
			}
			catch (NumberFormatException ie)
			{
			}
		}
		setFont();// 改变后,相应的设置操作
	}

	/**
	 * 按钮添加的监听器的方法,点击确定时,证明字体需要设置<BR>
	 * 点击取消的时候,字体不修改
	 */
	public void actionPerformed(ActionEvent e)
	{
		if (e.getSource() == buttonApprove)
		{
			isFontChange = true;// 设置成字体以改变够的状态
			setVisible(false);// 当点确定时,设置对话框成不可见
			this.dispose();
		}
		if (e.getSource() == buttonCancel)
		{
			isFontChange = false;// 设置成字体,没有改变够的状态
			setVisible(false);// 点取消后,对话框不可见
			this.dispose();
		}

		if (e.getSource() == buttonColor)
		{
			resultFontColor = JColorChooser.showDialog(this, "选择颜色",
					Color.WHITE);// 用来选择字颜色
		}

		if (e.getSource() == fontSize_field)// 当手动输入字大小时候,可以做出反应
		{
			try
			{
				int size = Integer.parseInt(fontSize_field.getText());
				fontSize = size;

			}
			catch (NumberFormatException ie)
			{
			}
		}
		setFont();// 改变后,相应的设置操作

	}

	/**
	 * 字体改变后,new字体对象,并更改示例文字的字体
	 */
	public void setFont()
	{
		resultFont = new Font(fontName, fontForm, fontSize);// 重新new要返回的字体对象
		// 如果字体是英文字体,就显示字母,中文字体就实现中文
		char c = fontName.charAt(0);
		if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
			showString_label.setText("AaBaYyZz");
		else
			showString_label.setText("黎明中文软件");

		showString_label.setFont(resultFont);// 设置示例标签上的文字的字体,字形,字的大小,和颜色
		showString_label.setForeground(resultFontColor);
	}

	/**
	 * @return isFontChange 返回点击的确定还是取消
	 */
	public boolean isFontChange()
	{
		return isFontChange;
	}

	/**
	 * @return resultFont 返回确定的字体对象
	 */
	public Font getFont()
	{
		return resultFont;
	}

	/**
	 * @return resultFontColor 返回选择的字体颜色
	 */
	public Color getFontColor()
	{
		return resultFontColor;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -