1

我如何使用 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 以这种方式格式化代码?我将使用提供的示例在答案中让你知道。

在问这个问题之前,我已经阅读了 Oracle 教程的链接。

4

1 回答 1

1

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

使用 HTML 标签。但在此之前,您必须将 contentType 设置为 ("text/html")。
这是一个简单的示例:
在此处输入图像描述

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);
  }
}
于 2013-03-28T17:59:47.433 回答