📄 jfontchooser.java
字号:
//package swjtu.ctb.dialog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class JFontChooser extends JDialog {
Font selectFont;
JPanel panel;
JList fontNameList;
JList fontSizeList;
JButton btnApprove = new JButton("确定");
JButton btnCancel = new JButton("取消");
JCheckBox boxBold = new JCheckBox("粗体");
JCheckBox boxItalic = new JCheckBox("斜体");
JLabel viewFont = new JLabel("Example");
public static final int APPROVE_OPTION = 1;
public static final int CANCEL_OPTION = 2;
int option = 0;
public JFontChooser() {
this(null, null);
}
public JFontChooser(JFrame owner, Font initFont) {
super(owner, "字体", true);
//------------- 设置字体选择对话框的界面 ---------------//
viewFont.setHorizontalAlignment(JLabel.CENTER);
String[] fontName = GraphicsEnvironment.getLocalGraphicsEnvironment().
getAvailableFontFamilyNames();
fontNameList = new JList(fontName);
JScrollPane scrollPane1 = new JScrollPane(fontNameList);
String[] fontSize = {"8 ", "10", "12", "14", "16",
"18", "20", "24", "30", "36", "40",
"48", "60", "72"};
fontSizeList = new JList(fontSize);
JScrollPane scrollPane2 = new JScrollPane(fontSizeList);
panel = (JPanel)this.getContentPane();
panel.setLayout(new BorderLayout());
JPanel panelCenter = new JPanel();
JPanel panelBottom = new JPanel(new GridLayout(2, 1));
panel.add(panelCenter, BorderLayout.CENTER);
panel.add(panelBottom, BorderLayout.SOUTH);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.add(viewFont);
panel2.add(btnApprove);
panel2.add(btnCancel);
panelBottom.add(panel1);
panelBottom.add(panel2);
panelCenter.add(scrollPane1);
panelCenter.add(scrollPane2);
JPanel panel3 = new JPanel(new GridLayout(5, 1));
panel3.add(boxBold);
panel3.add(boxItalic);
panelCenter.add(panel3);
//--------------------------------------//
fontNameList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
previewFont();
}
});
fontSizeList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
previewFont();
}
});
boxBold.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
previewFont();
}
});
boxItalic.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
previewFont();
}
});
btnApprove.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
option = APPROVE_OPTION;
close();
}
});
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
option = CANCEL_OPTION;
close();
}
});
//----------- 设置初始化窗口的字体参数 --------//
if (initFont == null) {
fontNameList.setSelectedIndex(0);
fontSizeList.setSelectedIndex(4);
} else {
}
//--------------------------------------------//
this.pack();
this.setLocationRelativeTo(owner);
}
private void previewFont() {
String selectFontName = null;
Font tempFont = null;
int selectSize = 8;
if (!fontNameList.isSelectionEmpty()) {
selectFontName = fontNameList.getSelectedValue().toString();
}
if (!fontSizeList.isSelectionEmpty()) {
String temp = fontSizeList.getSelectedValue().toString().trim();
selectSize = Integer.parseInt(temp);
}
boolean isBold = boxBold.isSelected();
boolean isItalic = boxItalic.isSelected();
int attr = Font.PLAIN;
if (isBold) attr = Font.BOLD;
if (isItalic) attr |= Font.ITALIC;
tempFont = new Font(selectFontName, attr, selectSize);
viewFont.setFont(tempFont);
}
private void applyFont() {
selectFont = viewFont.getFont();
}
public Font getFont() {
return selectFont;
}
private void close() {
switch (option) {
case APPROVE_OPTION:
applyFont();
break;
case CANCEL_OPTION:
default:
selectFont = null;
break;
}
this.dispose();
}
public int showDialog() {
this.setVisible(true);
return option;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -