|

- 社区积分
- 2
- 技术积分
- 23
- 阅读权限
- 20
- 注册时间
- 2007-12-21
|
楼主
发表于 2008-5-12 22:31
| 只看该作者
[Java] 我用Java编了一个字体选择器,请大家帮忙看看(附源码)
我是初学者,好像jdk并没有提供已有的字体对话框类,于是我就自己写了一个,比较粗糙。
问题是,字体类型(font style)和字体大小(font size)这两个功能都能实现,就是字体(font name)这个功能不能实现,请各位java达人帮忙谈谈看法,小弟不胜感激!!谢谢你们!!
源码如下:
import java.util.Hashtable;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
//import java.text.NumberFormat;
public class font{
public static void main(String[] agrs){
Frame fontFrame=new Frame("Sample");
fontFrame.setBounds(200,200,400,350);
final Dialog fontDlg=new Dialog(fontFrame,"SetFont");
fontDlg.setBounds(220,220,400,420);
//Button disButton=new Button("Disply");
Panel mainPanel=new Panel(new BorderLayout());
Panel fontPanel=new Panel();
final TextArea editorTA=new TextArea();
//Hashtable<String,Integer> sizeHt;
Font curFont=new Font("Arail",Font.PLAIN,13);
MenuBar mainMB=new MenuBar();
Menu editMenu=new Menu("Edit");
MenuItem fontMI=new MenuItem("Font");
Label fontName=new Label("Font:");
Label fontStyle=new Label("Style:");
Label fontSize=new Label("Size:");
Label pre=new Label("Preview:");
final Label preview=new Label("字体样式 AaBbCc",Label.CENTER);
final TextField fontNameTF=new TextField("Arial");
final TextField fontStyleTF=new TextField("Plain");
final TextField fontSizeTF=new TextField("12");
/*GraphicsEnvironment GE=GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] family=GE.getAvailableFontFamilyNames();
final JList fontNameList=new JList(family);*/
final List fontNameList=new List();
final List fontStyleList=new List();
final List fontSizeList=new List();
Button okButton=new Button("OK");
Button cancelButton=new Button("Cancel");
mainPanel.add(editorTA);
fontFrame.add(mainPanel);
editMenu.add(fontMI);
mainMB.add(editMenu);
fontFrame.setMenuBar(mainMB);
//fontPanel.add(disButton);
fontPanel.setLayout(null);
fontPanel.add(fontName);fontName.setBounds(15,18,90,20);
fontPanel.add(fontStyle);fontStyle.setBounds(155,18,120,20);
fontPanel.add(fontSize);fontSize.setBounds(290,18,80,15);
fontPanel.add(fontNameTF);fontNameTF.setBounds
(15,40,115,20);fontNameTF.setFont(curFont);
fontPanel.add(fontStyleTF);fontStyleTF.setBounds(155,40,120,20);
fontPanel.add(fontSizeTF);fontSizeTF.setBounds(290,40,80,20);
fontPanel.add(fontNameList);fontNameList.setBounds(15,70,115,280);
fontPanel.add(fontStyleList);fontStyleList.setBounds(155,70,120,150);
fontPanel.add(fontSizeList);fontSizeList.setBounds(290,70,80,150);
fontPanel.add(pre);pre.setBounds(155,225,120,20);
fontPanel.add(preview);preview.setBounds
(155,250,215,65);preview.setBackground(Color.white);
fontPanel.add(okButton);okButton.setBounds(155,325,100,25);
fontPanel.add(cancelButton);cancelButton.setBounds(270,325,100,25);
fontDlg.add(fontPanel);
GraphicsEnvironment GE=GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] family=GE.getAvailableFontFamilyNames();
for(int i=0;i<family.length;i++)
fontNameList.add(family);
fontNameList.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
fontNameTF.setText(fontNameList.getSelectedItem());
Font changedFont1=new Font(fontNameTF.getText
(),fontStyleList.getSelectedIndex(),
Integer.parseInt(fontSizeTF.getText()));
preview.setFont(changedFont1);
}
});
String style[]={"Plain","Bold","Italic","Bold&Italic"};
for(int i=0;i<style.length;i++)
fontStyleList.add(style);
fontStyleList.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
fontStyleTF.setText(fontStyleList.getSelectedItem());
Font changedFont1=new Font(fontNameTF.getText
(),fontStyleList.getSelectedIndex(),
Integer.parseInt(fontSizeTF.getText()));
preview.setFont(changedFont1);
}
});
String size[]={"5","8","9","10","11","12","14","16","18","20","22","24",
"26","28","36","48","72"};
for(int i=0;i<size.length;i++)
fontSizeList.add(size);
fontSizeList.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
fontSizeTF.setText(fontSizeList.getSelectedItem());
Font changedFont3=new Font(fontNameTF.getText
(),fontStyleList.getSelectedIndex(),
Integer.parseInt(fontSizeTF.getText()));
preview.setFont(changedFont3);
}
});
okButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Font newFont=new Font(fontNameTF.getText
(),fontStyleList.getSelectedIndex(),
Integer.parseInt(fontSizeTF.getText()));
editorTA.setFont(newFont);
fontDlg.dispose();
}
});
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fontDlg.dispose();
}
});
fontMI.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fontDlg.show();
}
});
fontFrame.show();
fontFrame.addWindowListener(new close());
fontDlg.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
fontDlg.dispose();
}
});
}
}
class close extends WindowAdapter{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
没有找到java的板块,也不知道发到这里合不合适,请版主多多见谅!! |
-
-
font.txt (5.02 KB)
-
1
评分次数
-
|