JAVA语言版之字体格式设置对话框的编程实现
2012-08-09 19:28
519 查看
在编写自己的记事本小程序时,为了给里面的文本设置格式,需要一个格式对话框来进行这方面的设置,但是,在JAVA中,并没有现成的字体格式设置对话框供我们使用,这时,我们就需要自己去设计一个对话框。接下来讲述一下自己的实现。
首先发个截图看看我的对话框的效果是怎样的吧,如下所示:
![](http://my.csdn.net/uploads/201208/09/1344511289_1847.jpg)
在上图中我们可以看到,整个字体设置对话框包含四个部分,分别为字体的选择,字形的选择,字体大小的设置以及字体样式的示例,通过示例我们可以很方便的看到设置成的字体是什么效果的。
字形的选择,字体的选择和字体大小的设置是通过三个JList控件完成的,用一个JLabel来显示示例。
在这里需要提一点的是,在设计自己的字体设置对话框时不要将自己的类命名为Font,因为这个名称在软件自带的包中以及被定义了,所以最好换个名称。
在设计对话框时,首先我们应该定义需要用到的各种控件,如下所示:
在定义了需要的控件之后就需要创建各种控件的实例并将它们添加到对话框中,程序如下所示:
这时候我们就完成了基本的界面设计,接下来需要完成的是三个JList和两个JButton的事件监听程序的设计,并添加监听。程序如下所示:
对于两个按键的事件监听处理程序则比较简单了,如下所示:
通过上面的讲述,我想大家也知道如何去编写自己的字体设置的应用程序了吧!
首先发个截图看看我的对话框的效果是怎样的吧,如下所示:
![](http://my.csdn.net/uploads/201208/09/1344511289_1847.jpg)
在上图中我们可以看到,整个字体设置对话框包含四个部分,分别为字体的选择,字形的选择,字体大小的设置以及字体样式的示例,通过示例我们可以很方便的看到设置成的字体是什么效果的。
字形的选择,字体的选择和字体大小的设置是通过三个JList控件完成的,用一个JLabel来显示示例。
在这里需要提一点的是,在设计自己的字体设置对话框时不要将自己的类命名为Font,因为这个名称在软件自带的包中以及被定义了,所以最好换个名称。
在设计对话框时,首先我们应该定义需要用到的各种控件,如下所示:
//定义对话框需要的控件 JList jl_fontpolics=null,jl_fontstyle=null,jl_fontsize=null; JPanel jp_fontpolics=null,jp_fontstyle=null,jp_fontsize=null; JPanel jp_setting=null,jp_example=null,jp_examplebutton=null; JTextField jtf_fontpolics=null,jtf_fontstyle=null,jtf_fontsize=null; JLabel jl_examplename=null,jl_examplecontext=null; JButton jb_ok=null,jb_cancel=null;
在定义了需要的控件之后就需要创建各种控件的实例并将它们添加到对话框中,程序如下所示:
//字体 jp_setting=new JPanel(); jp_fontpolics=new JPanel(); jp_fontstyle=new JPanel(); jp_fontsize=new JPanel(); //添加边框 Border borderpolics=BorderFactory.createLoweredBevelBorder(); Border borderstyle=BorderFactory.createLoweredBevelBorder(); Border bordersize=BorderFactory.createLoweredBevelBorder(); borderpolics=BorderFactory.createTitledBorder(borderpolics,"字体"); borderstyle=BorderFactory.createTitledBorder(borderstyle,"字形"); bordersize=BorderFactory.createTitledBorder(bordersize,"大小"); jp_fontpolics.setBorder(borderpolics); jp_fontstyle.setBorder(borderstyle); jp_fontsize.setBorder(bordersize); //定义和获取列表内容 java.awt.Font[] fonts=java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts(); int fontslength=fonts.length; String[] fontpolicsnames=new String[fontslength]; String[] fontstylenames=new String[]{"常规","粗体","斜体","粗体+斜体"}; String[] fontsizenames=new String[]{"8","9","10","11","12","14","16","18","20","24","28","32","36","40","48"}; for(int i=0;i<fontslength;i++) { fontpolicsnames[i]=fonts[i].getName(); } //创建列表 jl_fontpolics=new JList(fontpolicsnames); jl_fontstyle=new JList(fontstylenames); jl_fontsize=new JList(fontsizenames); //设置为单选模式 jl_fontpolics.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jl_fontstyle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jl_fontsize.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //设置显示个个数为5个 jl_fontpolics.setVisibleRowCount(5); jl_fontstyle.setVisibleRowCount(5); jl_fontsize.setVisibleRowCount(5); //设置文本框的默认值是列表项的第一项 jtf_fontpolics=new JTextField(fontpolicsnames[fontslength-11]);//默认选择宋体 jtf_fontstyle=new JTextField(fontstylenames[0]);//默认选择常规字形 jtf_fontsize=new JTextField(fontsizenames[9]);//默认选择24号大小 //为列表添加监听 jl_fontpolics.addListSelectionListener(policslistener); jl_fontstyle.addListSelectionListener(stylelistener); jl_fontsize.addListSelectionListener(sizelistener); //让列表项可以上下移动 JScrollPane jsp_fontpolics=new JScrollPane(jl_fontpolics); JScrollPane jsp_fontstyle=new JScrollPane(jl_fontstyle); JScrollPane jsp_fontsize=new JScrollPane(jl_fontsize); jp_fontpolics.setLayout(new BoxLayout(jp_fontpolics,BoxLayout.PAGE_AXIS)); jp_fontstyle.setLayout(new BoxLayout(jp_fontstyle,BoxLayout.PAGE_AXIS)); jp_fontsize.setLayout(new BoxLayout(jp_fontsize,BoxLayout.PAGE_AXIS)); //添加控件到面板 jp_fontpolics.add(jtf_fontpolics); jp_fontpolics.add(jsp_fontpolics); jp_fontstyle.add(jtf_fontstyle); jp_fontstyle.add(jsp_fontstyle); jp_fontsize.add(jtf_fontsize); jp_fontsize.add(jsp_fontsize); jp_setting.add(jp_fontpolics); jp_setting.add(jp_fontstyle); jp_setting.add(jp_fontsize); jp_example=new JPanel(new BorderLayout()); jp_examplebutton=new JPanel(); jl_examplename=new JLabel(" 示例:"); jl_examplecontext=new JLabel("AaBbCcDdEe",JButton.CENTER); textfont=new Font("宋体",Font.PLAIN,24); jl_examplecontext.setFont(textfont); jb_ok=new JButton("确定"); jb_cancel=new JButton("退出"); jp_examplebutton.add(jb_ok); jp_examplebutton.add(jb_cancel); jp_example.add(jl_examplename,BorderLayout.NORTH); jp_example.add(jl_examplecontext,BorderLayout.CENTER); jp_example.add(jp_examplebutton,BorderLayout.SOUTH); this.add(jp_setting,BorderLayout.NORTH); this.add(jp_example,BorderLayout.CENTER);
这时候我们就完成了基本的界面设计,接下来需要完成的是三个JList和两个JButton的事件监听程序的设计,并添加监听。程序如下所示:
//字体监听程序 ListSelectionListener policslistener=new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { //注意添加这么一段程序,防止单击时valueChanged函数被调用两次 if(e.getValueIsAdjusting()) { return; } JList polics=(JList)e.getSource(); String policsname=(String)polics.getSelectedValue(); jtf_fontpolics.setText(policsname); setTextFont(); jl_examplecontext.setFont(textfont); } }; //字形监听程序 ListSelectionListener stylelistener=new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { //注意添加这么一段程序,防止单击时valueChanged函数被调用两次 if(e.getValueIsAdjusting()) { return; } JList style=(JList)e.getSource(); String stylename=(String)style.getSelectedValue(); jtf_fontstyle.setText(stylename); setTextFont(); jl_examplecontext.setFont(textfont); } }; //字体大小监听程序 ListSelectionListener sizelistener=new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { //注意添加这么一段程序,防止单击时valueChanged函数被调用两次 if(e.getValueIsAdjusting()) { return; } JList size=(JList)e.getSource(); String sizename=(String)size.getSelectedValue(); jtf_fontsize.setText(sizename); setTextFont(); jl_examplecontext.setFont(textfont); } };
对于两个按键的事件监听处理程序则比较简单了,如下所示:
//事件监听程序 public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand().equals("yes")) { this.nodepad.jta_message.setFont(textfont); this.dispose(); }else if(e.getActionCommand().equals("no")) { this.dispose(); } }
通过上面的讲述,我想大家也知道如何去编写自己的字体设置的应用程序了吧!
相关文章推荐
- 14、java实现poi操作excel,包括读和写日期格式,并且设置字体样式
- 14、java实现poi操作excel,包括读和写日期格式,并且设置字体样式
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- Android编程实现设置TabHost当中字体的方法
- Java中弹出对话框中的字体设置问题
- Java 实训 使用弹出对话框设置主窗体中的文本字体
- java实现仿windows 字体设置选项卡实例
- Java Swing 界面统一设置字体格式
- JAVA Eclipse如何设置编程环境字体
- Java POI 实现Excel单元格合并及设置字体样式
- 字体选择对话框CFontDialog(没有实现颜色设置)
- JAVA实现打开文件对话框(可以指定所需打开文件的格式)
- JAVA Eclipse如何设置编程环境字体
- 基于Java语言的安卓编程之九混合方式实现UI设置
- 设置QT标准提示对话框中字体格式
- java字体设置对话框
- java网络编程--解析通过web.xml文件控制利用过滤器实现编码格式步骤
- java实现的18位身份证格式验证算法-Java基础-Java-编程开发
- Eclipse设置java代码编辑区字体格式的方法
- 关于用dom4j实现xml文件输出时格式设置的发现