<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
       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Swing對JTextPane中字體顏色的設置

    Posted on 2007-07-09 08:50 zht 閱讀(10545) 評論(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);
    主站蜘蛛池模板: 亚洲精品色播一区二区| 精品无码一区二区三区亚洲桃色| 妻子5免费完整高清电视| 亚洲免费精彩视频在线观看| a级毛片免费在线观看| 成人a免费α片在线视频网站| 亚洲综合精品香蕉久久网| www一区二区www免费| 成在人线AV无码免费| 亚洲三级电影网站| 24小时日本韩国高清免费| 亚洲图片中文字幕| 好大好硬好爽免费视频| 337P日本欧洲亚洲大胆艺术图| 四虎影视永久免费观看地址| 成人午夜影视全部免费看| 免费看又爽又黄禁片视频1000| 亚洲s码欧洲m码吹潮| 免费人成无码大片在线观看| 日韩亚洲不卡在线视频中文字幕在线观看 | 亚洲黄色激情视频| 国产在线观看免费视频软件| 亚洲精品在线观看视频| 一个人在线观看视频免费| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲国产成人爱av在线播放| 免费国产叼嘿视频大全网站| 久久久久亚洲爆乳少妇无| 深夜福利在线视频免费| 亚洲VA中文字幕无码一二三区| 成人免费大片免费观看网站| 亚洲国产人成网站在线电影动漫| 国产在线a免费观看| 免费福利资源站在线视频| 国产免费小视频在线观看| a级毛片免费全部播放| 亚洲熟妇成人精品一区| 免费看www视频| 国产免费人成视频在线播放播 | 日本在线免费播放| 亚洲国语精品自产拍在线观看 |