字体工具栏

 今天用java写了一个字体工具栏。

Code:
  1. import javax.swing.*;  
  2. import java.awt.*;  
  3. import java.awt.event.*;  
  4.   
  5. //测试类  
  6. public class Exec {  
  7.     public static void main(String[] args) {  
  8.         // 创建窗体类DemoWindow        
  9.         DemoWindow dw = new DemoWindow("字体工具栏");  
  10.   
  11.         // 将窗体的宽度和高度分别设置为屏幕宽度和屏幕高度的1/3,左上角位置也设置为屏幕宽度和屏幕高度的1/3处  
  12.         Toolkit theKit = dw.getToolkit();  
  13.         Dimension wndSize = theKit.getScreenSize();  
  14.         dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,  
  15.                 wndSize.height / 3);  
  16.   
  17.         // 点击关闭按钮可以退出程序  
  18.         dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  19.         // 设置窗体为可见  
  20.         dw.setVisible(true);  
  21.     }  
  22. }  
  23. //界面窗体类  
  24. class DemoWindow extends JFrame implements ActionListener,ItemListener{  
  25.     //显示文本内容的文本区  
  26.     JTextArea jta = new JTextArea();  
  27.       
  28.     //设置文本区的滚动条  
  29.     int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;  
  30.     int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;  
  31.     JScrollPane jsp = new JScrollPane(jta,v,h);  
  32.     //工具栏  
  33.     JToolBar toolbar = new JToolBar();  
  34.       
  35.     //"黑体"按钮图标  
  36.     ImageIcon ii1 = new ImageIcon("images/bold.gif"); //有图片……  
  37.     //"黑体"按钮  
  38.     JToggleButton jtb1 = new JToggleButton(ii1);  
  39.     //"斜体"按钮图标  
  40.     ImageIcon ii2 = new ImageIcon("images/italic.gif");  
  41.     //"斜体"按钮  
  42.     JToggleButton jtb2 = new JToggleButton(ii2);  
  43.       
  44.     //字体名称组合框  
  45.     JComboBox jcb1 = null;  
  46.     //字体大小组合框  
  47.     JComboBox jcb2 = null;  
  48.   
  49.     //构造函数  
  50.     public DemoWindow(String title){  
  51.         super(title);  
  52.         //添加文本框  
  53.         add(jsp);  
  54.           
  55.         //获取系统所有字体  
  56.         GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();  
  57.         String fontNames[] = ge.getAvailableFontFamilyNames();  
  58.         String sizeNames[] = new String[60];  
  59.         for(int i=0;i<59;i++){  
  60.             sizeNames[i] = 20+i+"";  
  61.         }  
  62.         Font newFont = new Font(null,0,20);  
  63.         jta.setFont(newFont);  
  64.         //创建字体名称组合框  
  65.         jcb1 = new JComboBox(fontNames);  
  66.         jcb2 = new JComboBox(sizeNames);  
  67.         jcb1.setMaximumSize(new Dimension(200,100));  
  68.         //设置文本框的最大的尺寸  
  69.         jcb2.setMaximumSize(new Dimension(50,100));  
  70.           
  71.         //设置按钮的边界填充距离  
  72.         jtb1.setMargin(new Insets(0,0,0,0));  
  73.         jtb2.setMargin(new Insets(0,0,0,0));  
  74.           
  75.         //设置工具栏  
  76.         toolbar.add(jcb1);  
  77.         toolbar.addSeparator();  
  78.         toolbar.add(jcb2);  
  79.         toolbar.addSeparator();  
  80.         toolbar.add(jtb1);  
  81.         toolbar.add(jtb2);  
  82.           
  83.         //设置工具栏的翻转状态  
  84.         toolbar.setRollover(true);  
  85.         //添加工具栏  
  86.         add(toolbar,BorderLayout.NORTH);  
  87.         //添加事件监听器  
  88.         jtb1.addActionListener(this);  
  89.         jtb2.addActionListener(this);  
  90.         jcb1.addItemListener(this);  
  91.         jcb2.addItemListener(this);  
  92.         this.setVisible(true);  
  93.         this.setSize(500250);  
  94.     }  
  95.     //响应单击按钮  
  96.     public void actionPerformed(ActionEvent e){  
  97.         //获取文本区的当前字体  
  98.         Font font = jta.getFont();  
  99.           
  100.         //处理设置黑体  
  101.         if(e.getSource() == jtb1){  
  102.             //在现有字体上添加黑体属性  
  103.             jta.setFont(font.deriveFont(font.getStyle()^Font.BOLD));  
  104.         }else if(e.getSource() == jtb2){  
  105.             //在现有字体上添加斜体  
  106.             jta.setFont(font.deriveFont(font.getStyle()^Font.ITALIC));  
  107.         }  
  108.         //文本区获得焦点  
  109.         jta.requestFocus();   
  110.     }  
  111.     //响应选中的组合框  
  112.     public void itemStateChanged(ItemEvent e){  
  113.         //获取文本区的当前的文字  
  114.         Font font = jta.getFont();  
  115.         if(e.getSource() == jcb1){  
  116.             //根据选中的字体名称,得到新的字体  
  117.             Font newFont = new Font((String)jcb1.getSelectedItem(),  
  118.                     font.getStyle(),Integer.parseInt((String)jcb2.getSelectedItem()));  
  119.             //设置文本区的新字体  
  120.             jta.setFont(newFont);  
  121.         }else if(e.getSource() == jcb2){  
  122.             //根据选中的字体大小,得到新的字体  
  123.             Font newFont = new Font((String)jcb1.getSelectedItem(),  
  124.                     font.getStyle(),Integer.parseInt((String)jcb2.getSelectedItem()));  
  125.             //设置文本区的新字体  
  126.             jta.setFont(newFont);  
  127.               
  128.         }  
  129.         //文本区获得焦点  
  130.         jta.requestFocus();  
  131.     }  
  132. }  

用到两张图片,不能插入,请点击:student.csdn.net/space.php


ps:我的新博客地址:http://www.xinghaixu.com

----------------------更多博文请关注http://www.xinghaixu.com-----------------------
原文地址:https://www.cnblogs.com/xcxinghai/p/3283904.html