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

📄 fontdialog.java

📁 实现了Window的NotePad的功能
💻 JAVA
字号:
package cqj.jar.com;

//import java.awt.Dialog;
//import java.awt.Dimension;
//import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
//import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
//import java.awt.event.WindowAdapter;
//import java.awt.event.WindowEvent;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class FontDialog extends JDialog implements FontConstants {
	public JLabel labelFont;
	public JLabel labelStyle;
	public JLabel labelSize;
	
	public JTextField fieldFont;
	public JTextField fieldStyle;
	public JTextField fieldSize;
	
	public JList listFont;		//字体
	public JList listStyle;		//字形
	public JList listSize;		//大小
	//static final String[] strFont = {"宋体","楷体","华文楷体","华文中宋","华文细黑","新宋体","绿书","微软雅黑"}; 
	//static final String[] strStyle = {"常规","粗体","斜体","粗斜体"}; 
	//static final String[] strSize = {"12","14","16","20","24","30","36","50","75"}; 
	
	public JButton butConfirm;
	public JButton butCancel;
	
	public JLabel  labelForExample;
		
	public FontDialog(Frame frame, String title, int width, int height) {
		super(frame, title);	
		this.width = width;
		this.height = height;
		setInit();

		initComponents();
		
		addComListener();
		
		updateFiledFont();
		this.setVisible(true);		
	}
	
	//@Override
	public void initComponents() {
		//初始化对话框中的组件
		//初始化说明标签
		labelFont = new JLabel("字体:          ");
		labelStyle = new JLabel("字形:      ");
		labelSize = new JLabel("大小:   ");
		//labelFont.setSize(10, 10);
		
		//初始化文本区
		fieldFont = new JTextField("宋体");
		fieldStyle = new JTextField("常规");
		fieldSize = new JTextField(defaulstSize);
		//设置文本区列数 10,8,5
		fieldFont.setColumns(15);
		fieldStyle.setColumns(10);
		fieldSize.setColumns(7);
		
		//初始化列表
		listFont = new JList(strFont);
		listStyle = new JList(strStyle);
		listSize = new JList(strSize);
		
		//设置初始化列表选中值
		listFont.setSelectedIndex(defaulstFontIndex);
		listStyle.setSelectedIndex(defaulstStyleIndex);
		listSize.setSelectedIndex(defaulstSizeIndex);
		
		//设置各个列表可见行数
		listFont.setVisibleRowCount(6);
		listStyle.setVisibleRowCount(6);
		listSize.setVisibleRowCount(6);
		
		//设置各个列表固定单元格宽度 
		//未加这之前UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
		//96,88,41
		listFont.setFixedCellWidth(83);
		listStyle.setFixedCellWidth(69);
		listSize.setFixedCellWidth(33);
		
		//对各个列表封闭上滚动条
		JScrollPane scrollPane1 = new JScrollPane(listFont);
		JScrollPane scrollPane2 = new JScrollPane(listStyle);
		JScrollPane scrollPane3 = new JScrollPane(listSize);
		
		butConfirm = new JButton("确定");
		butCancel = new JButton("取消");
		
		
		JPanel textControlsPane = new JPanel();
		textControlsPane.setMinimumSize(new Dimension(350,200));
		
        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();

        textControlsPane.setLayout(gridbag);
        JLabel[] labels = {labelFont, labelStyle, labelSize};
        JTextField[] textFields = {fieldFont, fieldStyle, fieldSize};
        JList[] lists = {listFont, listStyle, listSize};
        JScrollPane[] scrollPanes = {scrollPane1, scrollPane2, scrollPane3};
        JButton[] buttons = {butConfirm, butCancel};
        //add(scrollPane1, BorderLayout.NORTH);
        //addLabelTextLists(labels, textFields, lists, buttons, gridbag, textControlsPane);
        addLabelTextScrolls(labels, textFields, scrollPanes, buttons, gridbag, textControlsPane);
     
        labelForExample = new JLabel("陈求江", SwingConstants.LEFT);
        labelForExample.setMaximumSize(new Dimension(300,50));
      
        //labelForExample.setAlignmentX(SwingConstants.LEFT);
        JPanel panelExample = new JPanel();
        panelExample.setMaximumSize(new Dimension(350,60));
        
        panelExample.add(labelForExample, BorderLayout.CENTER);
        panelExample.setBorder(BorderFactory.createCompoundBorder(
                BorderFactory.createTitledBorder("样式举例"),
                BorderFactory.createEmptyBorder(5,5,5,5)));
        
		
        this.setLayout(new BorderLayout());
        Container contentPane = this.getContentPane();
        //contentPane.add(scrollPane1, BorderLayout.NORTH);
        contentPane.add(textControlsPane, BorderLayout.NORTH);
        contentPane.add(panelExample, BorderLayout.CENTER);
        
        setExampleFont();
        //this.setVisible(true);
        
        
	}
	
	private void addLabelTextScrolls(JLabel[] labels,
            JTextField[] textFields,
            JScrollPane[] lists,
            JButton[] buttons,
            GridBagLayout gridbag,
            Container container) {
		GridBagConstraints c = new GridBagConstraints();
		//c.anchor = GridBagConstraints.EAST;
		//int numLabels = labels.length;
		//c.weightx = 0.0;
		//gridwidth:指定组件的显示区域中行(针对 gridwidth)或列(针对 gridheight)中的单元数。默认值为 1。
		//使用 GridBagConstraints.REMAINDER 指定组件的显示区域为从 gridx 到该行(针对 gridwidth)中的最后一个单元
		//GridBagConstraints.RELATIVE 指定组件的显示区域为从 gridx 到其所在行(针对 gridwidth)的倒数第二个单元
		//c.gridwidth = 1;
		JLabel lab1 = new JLabel("  ");
		//JLabel lab2 = new JLabel("  ");
		c.gridx = 0;
		c.weightx = 1.0;
		container.add(labels[0], c);

		c.gridx = 1;
		container.add(labels[1], c);
		
		c.gridwidth = GridBagConstraints.RELATIVE;
		c.gridx = 2;
		container.add(labels[2], c);
		
		c.gridwidth = GridBagConstraints.REMAINDER;
		c.gridx = 3;
		container.add(lab1, c);
		
		c.gridx = 0;
		c.gridy = 1;
		c.gridwidth = 1;
		container.add(textFields[0], c);
		
		c.gridx = GridBagConstraints.RELATIVE;
		container.add(textFields[1], c);
		
		c.gridwidth = GridBagConstraints.RELATIVE;
		c.gridx = 2;
		container.add(textFields[2], c);
		
		c.gridwidth = GridBagConstraints.REMAINDER;
		c.gridx = 3;
		container.add(buttons[0], c);
		
		///*
		c.gridx = 0;
		c.gridy = 2;
		c.gridwidth = 1;	
		container.add(lists[0], c);
		
		c.gridx = 1;
		c.gridwidth = 1;
		container.add(lists[1], c);
		
		c.gridx = 2;
		c.gridwidth = GridBagConstraints.RELATIVE;		
		container.add(lists[2], c);
		
		c.gridwidth = GridBagConstraints.REMAINDER;
		c.gridx = 3;
		container.add(buttons[1], c);		
	}
	//@Override
	public void addComListener() {
		//添加组件的事件监听		
		
		this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		My_ListSelectedListener myListener = new My_ListSelectedListener();
		
		listFont.addListSelectionListener(myListener);
		listStyle.addListSelectionListener(myListener);
		listSize.addListSelectionListener(myListener);
	}
	
	class My_ListSelectedListener implements ListSelectionListener {
		public void valueChanged(ListSelectionEvent e) {
			//int firstIndex = e.getFirstIndex();
			//int lastIndex =  e.getLastIndex();
			JList changedList = (JList)e.getSource();
			String selectedValue = ""+changedList.getSelectedValue();
			if(changedList == listFont) {
				//System.out.println("source : listFont");
				//System.out.println("value: " + selectedValue);
				setFieldFont(selectedValue);
				String fontStr = ""+selectedValue;
				boolean isEn = M_StringConstants.isEn(fontStr.charAt(0));
				if(!isEn) {
					//若是中文
					labelForExample.setText("陈求江");
				}
				else {
					labelForExample.setText("CcQqJj");
				}
			}
			else if(changedList == listStyle) {
				//System.out.println("source : listStyle");
				setFieldStyle(selectedValue);
			}
			else {
				//System.out.println("source : listSize");		
				setFieldSize(selectedValue);
			}
			setExampleFont();
			//System.out.println("firstIndex :" + firstIndex);
			//System.out.println("lastIndex :" + lastIndex);
			//System.out.println("source :" + e.getSource());
		}			 
	}
	public void setInit() {		
		setCenter();
		this.setLayout(new FlowLayout());
		this.setResizable(false);
	}
	//居中显示
	public void setCenter(){
		Toolkit t = Toolkit.getDefaultToolkit();
		Dimension screen_Size = t.getScreenSize();	
		Dimension dialog_Size = new Dimension(width,height);
		this.setPreferredSize(dialog_Size);
		int x = (screen_Size.width-width)/2;
		int y = (screen_Size.height-height)/2;
		setBounds(x, y, width, height);
	}
	
	//设置样例的显示
	public void setExampleFont() {
		labelForExample.setFont(getFont());
	}
	
	//更新TextField中的样式
	public void updateFiledFont() {
		fieldFont.setText(getFieldFont());
		fieldStyle.setText(getFieldStyle());
		fieldSize.setText(getFieldSize());
	}
	//public abstract String getTextField();
	public String getFieldFont() {
		return ""+listFont.getSelectedValue();
	}
	public void setFieldFont(String field) {
		fieldFont.setText(field);
	}
	
	public String getFieldStyle() {
		return ""+listStyle.getSelectedValue();
	}
	public void setFieldStyle(String field) {
		fieldStyle.setText(field);
	}
	
	public String getFieldSize() {
		return ""+listSize.getSelectedValue();
	}
	public void setFieldSize(String field) {
		fieldSize.setText(field);
	}
	
	public static int indexToFont(int index) {
		int style = Font.PLAIN;
		switch (index) {
		case 0:		//常规
			break;
		case 1:		//粗体
			style = Font.BOLD;
			break;
		case 2:		//斜体
			style = Font.ITALIC;
			break;
		case 3:		//粗斜体
			style = Font.BOLD|Font.ITALIC;
			break;
		default:
			break;
		}
		
		return style;
	}
	public Font getFont() {
		String name = this.getFieldFont();
		
		int style = indexToFont(listStyle.getSelectedIndex());
		
		int size = Integer.parseInt(this.getFieldSize());
		
		Font newFont = new Font( name,  style,  size);
		
		return newFont;
	}
	
	public  int width = 300;
	public  int height = 100;
	//public  boolean isChecked = false;
	
	
	/**
	 * @param args
	 */
	/*
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try   {  
            UIManager.setLookAndFeel(  
                    "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");  
	    }   catch   (Exception   e)   {}  
	    //new   demo();   
	    //350,350
		new FontDialog(null, "字体", 310,300);
	}
	*/

}

⌨️ 快捷键说明

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