📄 fontdialog.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 + -