600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > JAVA语言版之字体格式设置对话框的编程实现

JAVA语言版之字体格式设置对话框的编程实现

时间:2023-06-04 23:56:33

相关推荐

JAVA语言版之字体格式设置对话框的编程实现

在编写自己的记事本小程序时,为了给里面的文本设置格式,需要一个格式对话框来进行这方面的设置,但是,在JAVA中,并没有现成的字体格式设置对话框供我们使用,这时,我们就需要自己去设计一个对话框。接下来讲述一下自己的实现。

首先发个截图看看我的对话框的效果是怎样的吧,如下所示:

在上图中我们可以看到,整个字体设置对话框包含四个部分,分别为字体的选择,字形的选择,字体大小的设置以及字体样式的示例,通过示例我们可以很方便的看到设置成的字体是什么效果的。

字形的选择,字体的选择和字体大小的设置是通过三个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 stubif(e.getActionCommand().equals("yes")){this.nodepad.jta_message.setFont(textfont);this.dispose();}else if(e.getActionCommand().equals("no")){this.dispose();}}

通过上面的讲述,我想大家也知道如何去编写自己的字体设置的应用程序了吧!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。