<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);
    主站蜘蛛池模板: 亚洲视频.com| 亚洲人妻av伦理| 亚洲无限乱码一二三四区| 免费精品一区二区三区第35| 亚洲夜夜欢A∨一区二区三区| 一级毛片人与动免费观看| 亚洲毛片不卡av在线播放一区 | 亚洲天堂福利视频| 亚洲人成在线免费观看| 亚洲色欲或者高潮影院| 18国产精品白浆在线观看免费| 亚洲毛片免费观看| 成人免费一区二区无码视频| 亚洲人成色99999在线观看| 免费看香港一级毛片 | 一级做a爱过程免费视| 在线观看亚洲成人| 无码A级毛片免费视频内谢| 亚洲福利视频网址| 免费电视剧在线观看| 亚洲av无码一区二区三区四区| 夜色阁亚洲一区二区三区| 久久精品免费大片国产大片| 国产av天堂亚洲国产av天堂| h视频在线免费看| 欧美亚洲精品一区二区| 77777亚洲午夜久久多人| 久久久久久精品免费看SSS| 国产婷婷综合丁香亚洲欧洲| 国产中文字幕免费| 毛片免费在线观看| 亚洲中文字幕无码mv| 国产成人毛片亚洲精品| 97在线视频免费公开观看| 亚洲情A成黄在线观看动漫软件 | 亚洲区视频在线观看| 免费吃奶摸下激烈视频| 久久成人免费大片| 亚洲老熟女五十路老熟女bbw| 国产av无码专区亚洲av果冻传媒| 2020因为爱你带字幕免费观看全集 |