2011-04-19 13:23:16|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:Java, 界面设计|来源:唯设编程网
下面的代码告诉我们该怎么在文本编辑器中设置字体大小,颜色,加粗,下划线等许多便捷操作~
花了很长的时间找了这么一个资料,真是累煞我了~~!!
差点都要放弃了,最后终于在网络中搜索到了这么一段十分有用、十分有价值的东东!
感谢网络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); } } }