程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Swing對JTextPane中字體顏色的設置

Swing對JTextPane中字體顏色的設置

編輯:關於JAVA

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);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved