打印

我用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)

2008-5-12 22:31, 下载次数: 1

本帖最近评分记录
  • 网络忏悔 X币 +10 感谢您发布的原创,期待您的下篇佳作! 2008-5-12 22:51

TOP

自己顶一个~~~

TOP

支持原创,呵呵。
招暑期实习编辑,北京外地均可,要求有大量在线时间,熟悉论坛常规管理,了解论坛运作模式,有独特见解!
有意者请PM本人询问投递简历邮箱地址
我的Blog:http://chanhui.blog.ixpub.net

TOP

回复 #3 网络忏悔 的帖子

呵呵,谢谢!!我也期待达人的帮助~~

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-7-5 12:52 京ICP证060528 号

Designed By 17DST