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

📄 fontdialog.java

📁 记事本
💻 JAVA
字号:
package com.niit.NotaPad; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 

import javax.swing.border.*; 

public class FontDialog extends JDialog implements ListSelectionListener 
{
	private static final long serialVersionUID = 1001L;  
	private Container pane; 
	private JTextArea text; 
	private Font selectedFont; 
	private static int i = 37, j = 0, k = 7;  //为和系统默认的文字信息一致
	private JLabel fontLabel, styleLabel, sizeLabel,lfontbox; 
	private JTextField fontText, styleText, sizeText,demoText; 
	private JList fontList, styleList, sizeList; 
	private JButton confirm, cancel; 
	private JFrame owner; 
	private JPanel demoPanel; 
	private JComboBox cfont;
	private String styleNames[] = { "常规", "粗体", "斜体", "粗斜体" }; 
	private int styleIntNames[] = { Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD + Font.ITALIC };
	private String sizeNames[] = { "8", "9", "10", "11", "12", "14", "16", "18", "20",
			"22", "24", "26", "28", "36", "48", "72" };
	private String fontNames[] =
        GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
	public FontDialog( JFrame frame, JTextArea textArea ) 
	{
		super( frame, "字体" ); 
		owner = frame; 
		frame.setEnabled( false );
		text = textArea; 
		pane = getContentPane(); 
		//==============设置面板布局为空===================
		pane.setLayout( null ); 
		//=============定位JLabel==================
		fontLabel = new JLabel( "字体" ); 
		fontLabel.setBounds(19, 8, 114, 27); 
		pane.add( fontLabel ); 
		styleLabel = new JLabel( "字型" ); 
		styleLabel.setBounds(160, 9, 73, 26); 
		pane.add( styleLabel ); 
		sizeLabel = new JLabel( "大小" ); 
		sizeLabel.setBounds(260, 8, 43, 27); 
		pane.add( sizeLabel ); 
		//============定位JTextField================
		fontText = new JTextField();  
		fontText.setText( fontNames[i] );   
		fontText.setEditable(false);
		fontText.setBounds(19, 33, 114, 27); 
		pane.add( fontText ); 
		styleText = new JTextField();  
		styleText.setText( styleNames[j] ); 
		styleText.setEditable(false); 
		styleText.setBounds(160, 33, 73, 27); 
		pane.add( styleText ); 
		sizeText = new JTextField(); 
		sizeText.setText( sizeNames[k] );  
		sizeText.setEditable(false); 
		sizeText.setBounds(260, 33, 43, 27); 
		pane.add( sizeText ); 
		//===========定位JList并添加事件监听=================
		fontList = new JList( fontNames ); 
		fontList.setSelectedIndex( i ); 
		fontList.addListSelectionListener( this ); 
		fontList.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); 
		JScrollPane fontPane = new JScrollPane( fontList ); 
		fontPane.setBounds(19, 61, 114, 113); 
		pane.add( fontPane ); 
		fontList.ensureIndexIsVisible( i ); 
		styleList = new JList( styleNames ); 
		styleList.setSelectedIndex( j ); 
		styleList.addListSelectionListener( this ); 
		styleList.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); 
		JScrollPane stylePane = new JScrollPane( styleList ); 
		stylePane.setBounds(160, 61, 73, 113); 
		pane.add( stylePane ); 
		styleList.ensureIndexIsVisible( j ); 
		sizeList = new JList( sizeNames ); 
		sizeList.setSelectedIndex( k ); 
		sizeList.addListSelectionListener( this ); 
		sizeList.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); 
		JScrollPane sizePane = new JScrollPane( sizeList ); 
		sizePane.setBounds(260, 61, 43, 113); 
		pane.add( sizePane ); 
		sizeList.ensureIndexIsVisible( k ); 
		//================添加JButton按钮和事件监听================
		confirm = new JButton( "确定" ); 
		confirm.setBounds(331, 34, 73, 25); 
		confirm.addActionListener(new ConfirmHandle());
		pane.add( confirm ); 
		cancel = new JButton( "取消" ); 
		cancel.setBounds(331, 73, 73, 25); 
		cancel.addActionListener(new ConcelHandle());
		pane.add( cancel ); 
		//===================设置示例面板==========================
		TitledBorder tb = new TitledBorder( BorderFactory.createLineBorder( Color.BLACK ), "示例" ); 
		demoPanel = new JPanel( null ); 
		demoPanel.setBorder( tb );//以tb设置面板的边框  
		demoPanel.setBounds( 78, 185, 226, 88 );  
		demoText = new JTextField(" 本本 Just a practice"); 
		selectedFont = new Font( fontNames[i], styleIntNames[j], Integer.parseInt( sizeNames[k] ) );//实例化Font类对象selectedFont,字体为fontNames[i],样式为styleIntNames[j],大小为Integer.parseInt( sizeNames[k] )
		demoText.setFont( selectedFont ); 
		demoText.setEditable(false); 
		demoText.setHorizontalAlignment( JTextField.CENTER ); 
		demoText.setBounds(15, 20, 198, 55 ); 
		demoPanel.add( demoText ); 
		pane.add( demoPanel ); 
		lfontbox=new JLabel("字符集(R)");
		lfontbox.setBounds(310, 185, 100, 25);
		add(lfontbox);
		String[] font={"CHINESE-GB2312"}; 
		cfont = new JComboBox(font);
		cfont.setBounds(310, 215, 125, 25);
		pane.add(lfontbox);
		 pane.add(cfont);
		setSize(450, 330); 
		setResizable( false );
		setLocation( 400,200 ); 
		setVisible(true); 
		//================窗口关闭事件监听=================
		addWindowListener( 
			new WindowAdapter() 
			{
				public void windowClosing( WindowEvent e ) 
				{
					FontDialog.this.dispose(); 
					owner.setEnabled( true ); 
					owner.setVisible( true ); 
				}
			}
		);
	}
	//=======监听所有Jlist的方法,并根据所的数值设定文本字体========
	public void valueChanged( ListSelectionEvent e ) 
	{
		fontText.setText( fontList.getSelectedValue().toString() ); 
		styleText.setText( styleList.getSelectedValue().toString() ); 
		sizeText.setText( sizeList.getSelectedValue().toString() ); 
		selectedFont = new Font( fontNames[fontList.getSelectedIndex()],
			styleIntNames[styleList.getSelectedIndex()], 
			Integer.parseInt( sizeNames[sizeList.getSelectedIndex()] ) ); 
		demoText.setFont( selectedFont ); 
		demoText.updateUI(); 
	}
	//	 ===============确认按钮事件 ==================
	class ConfirmHandle implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			i = fontList.getSelectedIndex(); 
			j = styleList.getSelectedIndex(); 
			k = sizeList.getSelectedIndex(); 
 			text.setFont( selectedFont ); 
			FontDialog.this.dispose(); 
			owner.setEnabled( true ); 
			owner.setVisible( true ); 
		}
	} 
	// ================取消窗口事件 =================
	class ConcelHandle implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {
			{
				FontDialog.this.dispose(); 
				owner.setEnabled( true ); 
				owner.setVisible( true ); 
			}
		}
	}
}

⌨️ 快捷键说明

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