<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Swing


    天行健 君子以自強不息

    posts - 69, comments - 215, trackbacks - 0, articles - 16
       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Swing對JTextPane中字體顏色的設置

    Posted on 2007-07-09 08:50 zht 閱讀(10535) 評論(4)  編輯  收藏 所屬分類: Swing
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JEditorPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextPane;
    import javax.swing.UIManager;
    import javax.swing.WindowConstants;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.DefaultStyledDocument;
    import javax.swing.text.Document;
    import javax.swing.text.EditorKit;
    import javax.swing.text.MutableAttributeSet;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.StyleConstants;
    import javax.swing.text.StyledDocument;
    import javax.swing.text.StyledEditorKit;

    public class NewJFrame extends javax.swing.JFrame implements ActionListener {
     private JPanel jp1;

     private JButton color;

     private JTextPane jep;

     private JScrollPane jsp;

     private JButton font;

     /**
      * Auto-generated main method to display this JFrame
      */
     public static void main(String[] args) {
      NewJFrame inst = new NewJFrame();
      inst.setVisible(true);
     }

     public NewJFrame() {
      super();
      initGUI();
     }

     private void initGUI() {
      try {
       BorderLayout thisLayout = new BorderLayout();
       getContentPane().setLayout(thisLayout);
       setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
       {
        jp1 = new JPanel();
        getContentPane().add(jp1, BorderLayout.NORTH);
        {
         font = new JButton();
         font.addActionListener(this);
         jp1.add(font);
         font.setText("font");
        }
        {
         color = new JButton();
         jp1.add(color);
         color.addActionListener(this);
         color.setText("color");
        }
       }
       {
        jsp = new JScrollPane();
        getContentPane().add(jsp, BorderLayout.CENTER);
        {
         jep = new JTextPane();
         jsp.setViewportView(jep);
         jep.setDocument(new DefaultStyledDocument());
        }
       }
       pack();
       setSize(400, 300);
      } catch (Exception e) {
       e.printStackTrace();
      }
     }

     public static void setFontSize(JEditorPane editor, int size) {
      if (editor != null) {
       if ((size > 0) && (size < 512)) {
        MutableAttributeSet attr = new SimpleAttributeSet();
        StyleConstants.setFontSize(attr, size);
        setCharacterAttributes(editor, attr, false);
       } else {
        UIManager.getLookAndFeel().provideErrorFeedback(editor);
       }
      }
     }

     public static void setForeground(JEditorPane editor, Color fg) {
      if (editor != null) {
       if (fg != null) {
        MutableAttributeSet attr = new SimpleAttributeSet();
        StyleConstants.setForeground(attr, fg);
        setCharacterAttributes(editor, attr, false);
       } else {
        UIManager.getLookAndFeel().provideErrorFeedback(editor);
       }
      }
     }

     public static final void setCharacterAttributes(JEditorPane editor,
       AttributeSet attr, boolean replace) {
      int p0 = editor.getSelectionStart();
      int p1 = editor.getSelectionEnd();
      if (p0 != p1) {
       StyledDocument doc = getStyledDocument(editor);
       doc.setCharacterAttributes(p0, p1 - p0, attr, replace);
      }
      StyledEditorKit k = getStyledEditorKit(editor);
      MutableAttributeSet inputAttributes = k.getInputAttributes();
      if (replace) {
       inputAttributes.removeAttributes(inputAttributes);
      }
      inputAttributes.addAttributes(attr);
     }

     protected static final StyledDocument getStyledDocument(JEditorPane e) {
      Document d = e.getDocument();
      if (d instanceof StyledDocument) {
       return (StyledDocument) d;
      }
      throw new IllegalArgumentException("document must be StyledDocument");
     }

     protected static final StyledEditorKit getStyledEditorKit(JEditorPane e) {
      EditorKit k = e.getEditorKit();
      if (k instanceof StyledEditorKit) {
       return (StyledEditorKit) k;
      }
      throw new IllegalArgumentException("EditorKit must be StyledEditorKit");
     }

     public void actionPerformed(ActionEvent e) {
      Object obj = e.getSource();
      if (obj == font) {
       JEditorPane editor = jep;
       setFontSize(editor, 20);
      }
      if (obj == color) {
       JEditorPane editor = jep;
       setForeground(editor, Color.red);
      }
     }

    }
    其他操作如下:
    1、對字體的操作
    MutableAttributeSet attr = new SimpleAttributeSet();
        StyleConstants.setFontFamily(attr, family);
        setCharacterAttributes(editor, attr, false);
    family為字體
    2、對字體大小的操作
    MutableAttributeSet attr = new SimpleAttributeSet();
        StyleConstants.setFontSize(attr, size);
        setCharacterAttributes(editor, attr, false);
    size為字號
    3、是否是粗體的操作
    StyledEditorKit kit = getStyledEditorKit(editor);
       MutableAttributeSet attr = kit.getInputAttributes();
       boolean bold = (StyleConstants.isBold(attr)) ? false : true;
       SimpleAttributeSet sas = new SimpleAttributeSet();
       StyleConstants.setBold(sas, bold);
       setCharacterAttributes(editor, sas, false);
    4、是否是斜體的操作
    StyledEditorKit kit = getStyledEditorKit(editor);
       MutableAttributeSet attr = kit.getInputAttributes();
       boolean italic = (StyleConstants.isItalic(attr)) ? false : true;
       SimpleAttributeSet sas = new SimpleAttributeSet();
       StyleConstants.setItalic(sas, italic);
       setCharacterAttributes(editor, sas, false);
    5、是否有下劃線的操作
    StyledEditorKit kit = getStyledEditorKit(editor);
       MutableAttributeSet attr = kit.getInputAttributes();
       boolean underline = (StyleConstants.isUnderline(attr)) ? false
         : true;
       SimpleAttributeSet sas = new SimpleAttributeSet();
       StyleConstants.setUnderline(sas, underline);
       setCharacterAttributes(editor, sas, false);
    6、左中右對齊的處理
    MutableAttributeSet attr = new SimpleAttributeSet();
       StyleConstants.setAlignment(attr, a);
       setParagraphAttributes(editor, attr, false);
    public static final void setParagraphAttributes(JEditorPane editor,
       AttributeSet attr, boolean replace) {
      int p0 = editor.getSelectionStart();
      int p1 = editor.getSelectionEnd();
      StyledDocument doc = getStyledDocument(editor);
      doc.setParagraphAttributes(p0, p1 - p0, attr, replace);
     }
    a:0:左,1:中,2:右

    7、文本字體顏色的設置
    MutableAttributeSet attr = new SimpleAttributeSet();
        StyleConstants.setForeground(attr, fg);
        setCharacterAttributes(editor, attr, false);
    fg:為color
    8、文本背景顏色的設置
    MutableAttributeSet attr = new SimpleAttributeSet();
        StyleConstants.setBackground(attr, bg);
        setCharacterAttributes(editor, attr, false);
    主站蜘蛛池模板: 亚洲国产成人无码av在线播放| 亚洲A∨无码无在线观看| 亚洲 日韩经典 中文字幕| 午夜老司机永久免费看片| 亚洲第一AAAAA片| a视频在线观看免费| 亚洲欧洲国产精品香蕉网| a级毛片免费观看视频| 亚洲精品高清国产一线久久| 中文字幕不卡免费视频| 亚洲av伊人久久综合密臀性色 | 免费观看日本污污ww网站一区| 亚洲欧美日韩自偷自拍| 狠狠久久永久免费观看| 麻豆一区二区三区蜜桃免费| 亚洲伊人成无码综合网| 成人性做爰aaa片免费看| 亚洲av无码成人黄网站在线观看| 久久午夜免费鲁丝片| 久久精品国产亚洲AV大全| 亚洲高清中文字幕免费| 久久国产亚洲精品| 免费午夜爽爽爽WWW视频十八禁| xxxxxx日本处大片免费看| 久久久久久亚洲精品中文字幕| 免费观看激色视频网站bd| 亚洲精品乱码久久久久久V| 亚洲免费无码在线| 99视频免费播放| 亚洲免费综合色在线视频| 亚洲精品成a人在线观看| 久久久久国产免费| 亚洲一区二区三区国产精华液| 四虎影视在线永久免费观看| 国产麻豆成人传媒免费观看 | 亚洲日本在线观看网址| 狼友av永久网站免费观看| 免费看成人AA片无码视频吃奶| 亚洲国产亚洲综合在线尤物| 午夜亚洲av永久无码精品| 免费av片在线观看网站|