使用JTextPane来设置代码样式

时间:2013-03-28 17:14:19

标签: java swing selection jtextpane

我如何使用JTextPane将一段文本设置为“CODE”,就像你经常在论坛上看到的那样,或者你在堆栈溢出时看到这里?

public static main(String[] args) {
    /**
     * Look at this Code Block, ain't it grand?
     * I wish I had something like this in my program.
     */
}

或者我是如何在维基百科上看到的,文本是这样的: http://img39.imageshack.us/img39/4516/example.JPG

谢谢!

最终更新 Vishal K的回答正是我所需要的。正如所建议的那样,并非重复。

更新
感谢您的回复。我正在寻找的内容与上面建议的可能答案之间的区别在于,我不仅对更改字体感兴趣,而且还添加背景(围绕所述背景的边框将是一个加号,但不是必需的。我不需要做语法高亮。

我认为HTML标签可能是要走的路,如果是这样,那真的是问题:如何使用html以这种方式格式化代码?我将使用答案中提供的示例并让您知道。

P.s. P.在提出这个问题之前,我已经阅读了oracle教程的链接。

1 个答案:

答案 0 :(得分:1)

  

如何使用JTextPane设置文本部分的样式为" CODE,"喜欢你   经常在论坛上看到,或者你在堆栈溢出时看到这里?

使用HTML标签。但在此之前,您必须将contentType设置为(" text / html") 这是一个简单的例子:
enter image description here

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JTextPane;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class TextPaneDemo {
  static void addIt(JTabbedPane tabbedPane, String text) {
    JPanel panel = new JPanel();
    JTextPane ta = new JTextPane();
    ta.setContentType("text/html");
    ta.setText("<HTML><BODY><CODE> import java.io.*; <br> public class MyIO{}</CODE><br></BODY></HTML>");
    JScrollPane jsp = new JScrollPane(ta);
    panel.setLayout(new BorderLayout());
    panel.add(jsp);
    tabbedPane.addTab(text, panel);
  }

  public static void main(String args[]) {
    JFrame f = new JFrame("JTabbedPane Sample");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container content = f.getContentPane();
    JTabbedPane tabbedPane = new JTabbedPane();
    addIt(tabbedPane, "Tab One");
    content.add(tabbedPane, BorderLayout.CENTER);
    f.setSize(300, 200);
    f.setLocationRelativeTo(null);
    f.setVisible(true);
  }
}