?? fontchooser.java
字號:
package JTerm;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
* <p>Title: JTerm </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: Tsinghua</p>
* @author Frank.Wang
* @version 1.0
*/
public class FontChooser extends JDialog {
JPanel panel1 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
JList fontNameList = new JList();
JCheckBox ItalyCheck = new JCheckBox();
JCheckBox BoldCheck = new JCheckBox();
JComboBox SizeComboBox = new JComboBox();
JLabel jLabel1 = new JLabel();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
Font selectFont=null;
JLabel jChinese=new JLabel();
JLabel jEnglish=new JLabel();
public FontChooser(Frame frame, String title, boolean modal) {
super(frame, title, modal);
try {
jbInit();
pack();
setSize(350,280);
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public FontChooser() {
this(null, "", false);
}
private void jbInit() throws Exception {
panel1.setLayout(null);
jScrollPane1.setBounds(new Rectangle(7, 6, 137, 216));
ItalyCheck.setFont(new java.awt.Font("Monospaced", 0, 12));
ItalyCheck.setText("斜體");
ItalyCheck.setBounds(new Rectangle(237, 43, 83, 25));
BoldCheck.setFont(new java.awt.Font("Monospaced", 0, 12));
BoldCheck.setText("粗體");
BoldCheck.setBounds(new Rectangle(151, 43, 83, 25));
SizeComboBox.setEditable(true);
SizeComboBox.setBounds(new Rectangle(226, 13, 83, 22));
SizeComboBox.addItemListener(new FontChooser_SizeComboBox_itemAdapter(this));
SizeComboBox.setEditable(true);
jLabel1.setFont(new java.awt.Font("Monospaced", 0, 12));
jLabel1.setText("字體大小");
jLabel1.setBounds(new Rectangle(158, 14, 54, 16));
jButton1.setBounds(new Rectangle(161, 192, 73, 25));
jButton1.setFont(new java.awt.Font("Monospaced", 0, 12));
jButton1.setText("確定");
jButton1.addActionListener(new FontChooser_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(249, 192, 73, 25));
jButton2.setFont(new java.awt.Font("Monospaced", 0, 12));
jButton2.setText("取消");
jButton2.addActionListener(new FontChooser_jButton2_actionAdapter(this));
jChinese.setFont(new java.awt.Font("Monospaced", 0, 14));
jChinese.setHorizontalAlignment(SwingConstants.CENTER);
jChinese.setText("水木清華");
jChinese.setBounds(new Rectangle(155, 125, 152, 26));
jEnglish.setFont(new java.awt.Font("Monospaced", 0, 14));
jEnglish.setHorizontalAlignment(SwingConstants.CENTER);
jEnglish.setText("ABCDEFG,1234567");
jEnglish.setBounds(new Rectangle(155, 87, 152, 29));
this.setModal(true);
fontNameList.addMouseListener(new FontChooser_fontNameList_mouseAdapter(this));
getContentPane().add(panel1);
panel1.add(jScrollPane1, null);
panel1.add(SizeComboBox, null);
panel1.add(ItalyCheck, null);
panel1.add(jLabel1, null);
panel1.add(BoldCheck, null);
panel1.add(jButton1, null);
panel1.add(jButton2, null);
panel1.add(jEnglish, null);
panel1.add(jChinese, null);
jScrollPane1.getViewport().add(fontNameList, null);
}
public void showFrame(){
fillFontNames();
this.show();
}
public void setSelectFont(Font font){
selectFont=font;
}
public Font getSelectFont(){
return selectFont;
}
private void fillFontNames() {
GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();
DefaultListModel list = new DefaultListModel();
fontNameList.setModel(list);
String fontname=selectFont.getFontName();//System.getProperties().getProperty("FontName");
int fontsize,fontstyle;
fontsize = selectFont.getSize();//Integer.parseInt(System.getProperties().getProperty("FontSize"));
fontstyle= selectFont.getStyle();//Integer.parseInt(System.getProperties().getProperty("FontStyle"));
String[] fontlist=graphicsEnvironment.getAvailableFontFamilyNames(this.getLocale());
int i,len;
int sel=0;
len=fontlist.length;
for (i=0;i<len;i++){
list.addElement(fontlist[i]);
if (fontlist[i].compareTo(fontname)==0){
sel=i;
}
}
this.fontNameList.setSelectedIndex(sel);
DefaultComboBoxModel model=new DefaultComboBoxModel();
SizeComboBox.setModel(model);
sel=-1;
for (i=0;i<20;i++)
{
model.addElement(String.valueOf(i*2+8));
if (i*2+8==fontsize){
sel=i;
}
}
if (sel==-1)
this.SizeComboBox.setSelectedItem(String.valueOf(fontsize));
else
this.SizeComboBox.setSelectedIndex(sel);
if ((fontstyle&Font.BOLD)>0){
this.BoldCheck.setSelected(true);
}
if ((fontstyle&Font.ITALIC)>0){
this.ItalyCheck.setSelected(true);
}
}
void jButton1_actionPerformed(ActionEvent e) {
selectFont=changeFont();
System.gc();
this.dispose();
}
void jButton2_actionPerformed(ActionEvent e) {
selectFont=null;
this.dispose();
}
Font changeFont(){
int style=0;
int size=8;
if (BoldCheck.isSelected()) style|=Font.BOLD;
if (ItalyCheck.isSelected()) style|=Font.ITALIC;
try{
size = Integer.parseInt( (String) SizeComboBox.getSelectedItem());
}catch(Exception err){
size=selectFont.getSize();
}
Font font=new Font((String)fontNameList.getSelectedValue(),style,size);
jChinese.setFont(font);
jEnglish.setFont(font);
return font;
}
void fontNameList_mouseClicked(MouseEvent e) {
changeFont();
}
void SizeComboBox_itemStateChanged(ItemEvent e) {
changeFont();
}
}
class FontChooser_jButton1_actionAdapter implements java.awt.event.ActionListener {
FontChooser adaptee;
FontChooser_jButton1_actionAdapter(FontChooser adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class FontChooser_jButton2_actionAdapter implements java.awt.event.ActionListener {
FontChooser adaptee;
FontChooser_jButton2_actionAdapter(FontChooser adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class FontChooser_fontNameList_mouseAdapter extends java.awt.event.MouseAdapter {
FontChooser adaptee;
FontChooser_fontNameList_mouseAdapter(FontChooser adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.fontNameList_mouseClicked(e);
}
}
class FontChooser_SizeComboBox_itemAdapter implements java.awt.event.ItemListener {
FontChooser adaptee;
FontChooser_SizeComboBox_itemAdapter(FontChooser adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.SizeComboBox_itemStateChanged(e);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -