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

📄 fontdialog.java

📁 多页文本编辑器
💻 JAVA
字号:
/*
 * FontDialog.java
 *
 * Created on 2007年10月22日, 上午11:35
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package multipageeditor;

/**
 *
 * @author linda
 */
import javax.swing.*;
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Dimension;

//用于选择一种字体
public class FontDialog extends JDialog {
	JComboBox cmbFontSize = new JComboBox();
	JComboBox cmbFontName = new JComboBox();
	JTextArea txtSample = new JTextArea();
	JButton btnOk = new JButton();
	JButton btnCancel = new JButton();
	private Font selectedfont = new Font("宋体", Font.PLAIN, 12);
	private String simpleText = "ABCDabcd多页文本编辑器";
	private DialogResult dialggResult = DialogResult.Cancel;
	private GraphicsEnvironment graphicsEnvironment;

	public enum DialogResult {//枚举对话框选项
		Ok, Cancel
	}
        //带参数构造方法
	public FontDialog(Frame owner, String title, Font oldFont,boolean modal) {
		super(owner, title, modal);
		try {
			setDefaultCloseOperation(DISPOSE_ON_CLOSE);
			FontDialogInit();//对话框初始化
			initEvent();//对话框事件初始化
			initCombox();//组合框初始化
			setOldFont(oldFont);
			txtSample.setText(simpleText);
			txtSample.setEditable(false);
			txtSample.setEnabled(false);
			this.setLocationRelativeTo(owner);
			pack();
		} 
                catch (Exception exception) {
			exception.printStackTrace();
		}
	}
        //无参数构造方法
	public FontDialog() {
		this(new Frame(), "请选择字体、字号", new Font("宋体", Font.PLAIN, 12),true);
	}
        //对话框初始化
	private void FontDialogInit() throws Exception {
		btnOk.setMnemonic('O');
		btnOk.setText("确定(O)");
		btnCancel.setMnemonic('C');
		btnCancel.setSelectedIcon(null);
		btnCancel.setText("取消(C)");
		cmbFontName.setMinimumSize(new Dimension(40, 40));
		cmbFontName.setPreferredSize(new Dimension(120, 27));
		cmbFontName.setMaximumRowCount(10);
		cmbFontSize.setPreferredSize(new Dimension(120, 27));
		cmbFontSize.setMaximumRowCount(10);
		this.getContentPane().setLayout(null);
                cmbFontName.setBounds(20,5,160,30);
		this.getContentPane().add(cmbFontName);
                cmbFontSize.setBounds(220,5,160,30);
		this.getContentPane().add(cmbFontSize);
                txtSample.setBounds(20,50,360,100);
		this.getContentPane().add(txtSample);
                btnOk.setBounds(200,170,80,30);
		this.getContentPane().add(btnOk);
                btnCancel.setBounds(300,170,80,30);
		this.getContentPane().add(btnCancel);
	}

	private void initCombox() {        //组合框初始化
		fillFontNames();//字体组合框初始化
		fillFontSizes(getFontSizes());//字体尺寸组合框初始化
	}

	public void fillFontSizes(String[] fontSizes) {//字体尺寸组合框初始化
		cmbFontSize.setModel(new DefaultComboBoxModel(fontSizes));
	}
	
	public String[] getFontSizes() {//字体尺寸数据项
		String[] items = {"8.0", "10.0", "12.0", "14.0", "16.0",
				  "18.0", "24.0", "36.0", "48.0"};		
		return items;
	}

	private void fillFontNames() {//字体组合框初始化
		if (graphicsEnvironment == null) {
			graphicsEnvironment = GraphicsEnvironment
					.getLocalGraphicsEnvironment();
		}
		Font[] fonts=graphicsEnvironment.getAllFonts();
		String[] objs=new String[fonts.length];
		for(int i=0;i<fonts.length;i++) {
			objs[i]=fonts[i].getFamily();
		}
		cmbFontName.setModel(new DefaultComboBoxModel(objs));
	}

	private void initEvent() {//事件初始化
		this.btnOk.addActionListener(action);
		this.btnCancel.addActionListener(action);
		this.cmbFontName.addItemListener(cmbaction);
		this.cmbFontSize.addItemListener(cmbaction);
	}

	private String getFontFimaly() {//获取字体
		return cmbFontName.getSelectedItem().toString();
	}
	
	public int getFontSize() {
		//获取用户选取的字体尺寸
		int index = cmbFontSize.getSelectedIndex();
		int size=12;
		switch (index) {
		case 0:
			size=8;
			break;
		case 1:
			size=10;
			break;
		case 2:
			size=12;
			break;
		case 3:
			size=14;
			break;
		case 4:
		    size=16;
			break;
		case 5:
			size=18;
			break;
		case 6:
			size=24;
			break;
		case 7:
			size=36;
			break;
		case 8:
			size=48;
			break;
		}
		return size;
	}
	
	ItemListener cmbaction = new ItemListener() {//侦听组合框事件
		public void itemStateChanged(ItemEvent event) {
			Font ff=new Font(getFontFimaly(),Font.PLAIN,getFontSize());
			txtSample.setFont(ff);
		}
	};
	
	ActionListener action = new ActionListener() {//侦听动作事件
		public void actionPerformed(ActionEvent event) {
			if (event.getSource().equals(btnOk)) {
				dialggResult = DialogResult.Ok;
				selectedfont=new Font(getFontFimaly(),Font.PLAIN,getFontSize());				
			} 
                        else if (event.getSource().equals(btnCancel)) {
				dialggResult = DialogResult.Cancel;
			}
			Hide(); 
		}
	};

	private void Hide() {//隐藏窗口
		this.setVisible(false);
	}

	private void setOldFont(Font font) {//设置原有字体
            String str =font.getFamily();
            int items=cmbFontName.getItemCount();
            for(int i=0;i<items;i++) {
        	 if(str.equals(cmbFontName.getItemAt(i).toString())) {
        		 cmbFontName.setSelectedIndex(i);  //设置选中项
        		 break;
        	 }
            }
            String size=font.getSize()+".0";
            int count=cmbFontSize.getItemCount();
            for(int i=0;i<count;i++) {
        	 if(size.equals(cmbFontSize.getItemAt(i).toString())) {
        		 cmbFontSize.setSelectedIndex(i);
        		 break;
        	 }
            }
	}

	public Font getSelectedFont() {//获取选中的字体
		return selectedfont;
	}

	public void setSimpleText(String text) {//设置对话框文本区文本
		simpleText = text;
	}

	public DialogResult getDialogResult() {//获取用户点击按钮事件
		return dialggResult;
	}

	public void showDialog() {//显示对话框
		this.setSize(400, 240);
		this.setVisible(true);
	}

	public void Dispose() {//隐藏对话框
		this.dispose();
	}
}

⌨️ 快捷键说明

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