Swing对JTextPane中字体颜色的设置

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

时间: 2024-12-31 02:55:51

Swing对JTextPane中字体颜色的设置的相关文章

Android使用selector修改TextView中字体颜色和背景色的方法_Android

本文实例讲述了Android使用selector修改TextView中字体颜色和背景色的方法.分享给大家供大家参考,具体如下: android中的selector大家都很熟悉了,用它可以很方便的实现,控件在不同的动作中,颜色等值的变化.这里我说一下TextView中的一些应用. 我想大家都知道,Button按钮在源码上看是一种特殊的TextView,所以我们很多时候,按钮全是使用的TextView来完成,只要加一个android:clickable="true"就可以了. TextVi

安卓中autoCompleteTextview的下拉栏中字体颜色怎么改?

问题描述 安卓中autoCompleteTextview的下拉栏中字体颜色怎么改? 如上图所示,我输入"化"后,本应该弹出"化材院",但是在下拉栏中,"化材院"这三个字是白色的!我怎么改都无济于事,请问如何解决这个问题? 解决方案 适配器用android.R.layout.simple_list_item_1这个布局或者自己实现一个布局

javascript-marquee字体颜色不能设置

问题描述 marquee字体颜色不能设置 font标签能设置字体大小,但是怎么添加color都改变不了字体颜色.为什么? 解决方案 font已经废弃,使用css替换

javascript-myeclipse编辑JavaScript的字体颜色怎么设置?

问题描述 myeclipse编辑JavaScript的字体颜色怎么设置? 如图..color and font里找到字体的设置但是不能改颜色.. 解决方案 解决方案二: 设置myeclipse编辑窗口颜色----------------------

用ASP.NET(C#版)编写聊天室的过程中,如何通过选择DropDownList中的颜色相来使得文本框中字体颜色变化

问题描述 用ASP.NET(C#版)编写聊天室的过程中,如何通过选择DropDownList中的颜色来使得文本框中字体颜色变化?并且文本框中带有颜色的字体能显示到聊天记录中,聊天记录是另一个aspx页面--新手求大神指导! 解决方案 解决方案二:制定css样式,用js或jquery控制css样式变化解决方案三:说明你的"聊天消息"的表示协议.解决方案四:引用2楼sp1234的回复: 说明你的"聊天消息"的表示协议. 就是不懂怎么说明啊?麻烦大神再说清楚一点!谢谢@@

Word2010中字体颜色的调整技巧

  在Word中编辑文档的时候,我们时常会改变字体颜色,来给编辑文档增加一些色彩.美感,这样通篇看起来才不会那么的单调.今天,小编就要向大家介绍两种在Word2010中改变字体颜色的方法. Word2010 方法一 打开Word2010文档页面,我们首先选中需要设置字体颜色的文字. 在"字体"中单击"字体颜色"下三角按钮. 在字体颜色列表中选择"主题颜色"或"标准色"中符合我们要求的颜色即可. 为了设置更加丰富的字体颜色,我们

vb.net中richtextbox控件字体颜色的设置

问题描述 两个本地记事本的内容进行比较,不同的用颜色进行标记While(Notfs.EndOfStream)str=fs.ReadLine()str1=ft.ReadLine()RichTextBox1.Text+=str+Chr(13)+Chr(10)RichTextBox2.Text+=str1+Chr(13)+Chr(10)Ifstr.Length<=str1.LengthThenFori=0Tostr.Length-1Ifstr.Substring(i,1)<>str1.Subs

字体颜色-cocos2d 设置字体的颜色一直变化。。怎么做啊。!!!!新手求指导

问题描述 cocos2d 设置字体的颜色一直变化..怎么做啊.!!!!新手求指导 老师给我我们出了个题目,说是字体的颜色一直变化,要用代码写,还是c++.我们是在x-code环境中.求大神给个代码,解释一下啊!! 解决方案 太简单 update setcolor就行了 解决方案二: 开个定时器 在那跑 颜色随机

iOS如何把所有界面的状态栏的字体颜色都设置为白色

第一步:在info.plist中添加一个字段:view controller -base status bar 设置为NO 第二步:在一个所有界面都继承的父类里添加:   if (IOS7_OR_LATER) { // 判断是否是IOS7     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];   }