今天用java写了一个字体工具栏。
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- //测试类
- public class Exec {
- public static void main(String[] args) {
- // 创建窗体类DemoWindow
- DemoWindow dw = new DemoWindow("字体工具栏");
- // 将窗体的宽度和高度分别设置为屏幕宽度和屏幕高度的1/3,左上角位置也设置为屏幕宽度和屏幕高度的1/3处
- Toolkit theKit = dw.getToolkit();
- Dimension wndSize = theKit.getScreenSize();
- dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
- wndSize.height / 3);
- // 点击关闭按钮可以退出程序
- dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // 设置窗体为可见
- dw.setVisible(true);
- }
- }
- //界面窗体类
- class DemoWindow extends JFrame implements ActionListener,ItemListener{
- //显示文本内容的文本区
- JTextArea jta = new JTextArea();
- //设置文本区的滚动条
- int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
- int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
- JScrollPane jsp = new JScrollPane(jta,v,h);
- //工具栏
- JToolBar toolbar = new JToolBar();
- //"黑体"按钮图标
- ImageIcon ii1 = new ImageIcon("images/bold.gif"); //有图片……
- //"黑体"按钮
- JToggleButton jtb1 = new JToggleButton(ii1);
- //"斜体"按钮图标
- ImageIcon ii2 = new ImageIcon("images/italic.gif");
- //"斜体"按钮
- JToggleButton jtb2 = new JToggleButton(ii2);
- //字体名称组合框
- JComboBox jcb1 = null;
- //字体大小组合框
- JComboBox jcb2 = null;
- //构造函数
- public DemoWindow(String title){
- super(title);
- //添加文本框
- add(jsp);
- //获取系统所有字体
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- String fontNames[] = ge.getAvailableFontFamilyNames();
- String sizeNames[] = new String[60];
- for(int i=0;i<59;i++){
- sizeNames[i] = 20+i+"";
- }
- Font newFont = new Font(null,0,20);
- jta.setFont(newFont);
- //创建字体名称组合框
- jcb1 = new JComboBox(fontNames);
- jcb2 = new JComboBox(sizeNames);
- jcb1.setMaximumSize(new Dimension(200,100));
- //设置文本框的最大的尺寸
- jcb2.setMaximumSize(new Dimension(50,100));
- //设置按钮的边界填充距离
- jtb1.setMargin(new Insets(0,0,0,0));
- jtb2.setMargin(new Insets(0,0,0,0));
- //设置工具栏
- toolbar.add(jcb1);
- toolbar.addSeparator();
- toolbar.add(jcb2);
- toolbar.addSeparator();
- toolbar.add(jtb1);
- toolbar.add(jtb2);
- //设置工具栏的翻转状态
- toolbar.setRollover(true);
- //添加工具栏
- add(toolbar,BorderLayout.NORTH);
- //添加事件监听器
- jtb1.addActionListener(this);
- jtb2.addActionListener(this);
- jcb1.addItemListener(this);
- jcb2.addItemListener(this);
- this.setVisible(true);
- this.setSize(500, 250);
- }
- //响应单击按钮
- public void actionPerformed(ActionEvent e){
- //获取文本区的当前字体
- Font font = jta.getFont();
- //处理设置黑体
- if(e.getSource() == jtb1){
- //在现有字体上添加黑体属性
- jta.setFont(font.deriveFont(font.getStyle()^Font.BOLD));
- }else if(e.getSource() == jtb2){
- //在现有字体上添加斜体
- jta.setFont(font.deriveFont(font.getStyle()^Font.ITALIC));
- }
- //文本区获得焦点
- jta.requestFocus();
- }
- //响应选中的组合框
- public void itemStateChanged(ItemEvent e){
- //获取文本区的当前的文字
- Font font = jta.getFont();
- if(e.getSource() == jcb1){
- //根据选中的字体名称,得到新的字体
- Font newFont = new Font((String)jcb1.getSelectedItem(),
- font.getStyle(),Integer.parseInt((String)jcb2.getSelectedItem()));
- //设置文本区的新字体
- jta.setFont(newFont);
- }else if(e.getSource() == jcb2){
- //根据选中的字体大小,得到新的字体
- Font newFont = new Font((String)jcb1.getSelectedItem(),
- font.getStyle(),Integer.parseInt((String)jcb2.getSelectedItem()));
- //设置文本区的新字体
- jta.setFont(newFont);
- }
- //文本区获得焦点
- jta.requestFocus();
- }
- }
用到两张图片,不能插入,请点击:student.csdn.net/space.php
ps:我的新博客地址:http://www.xinghaixu.com