如何创建和使用JTextPane

时间:2015-08-10 20:12:45

标签: java swing jtextarea jtextpane

我想用Java创建一个以这种方式完成的程序: What I want

一个窗口,其中包含一个按钮和一个组件(JTextArea,JTextPane等),这些组件无法修改,其中会根据某些工作的执行情况出现一些字符串。 从图中可以看出,如果作业成功,文本将为黑色,如果有错误则会标记为红色。

我设法使用JTextArea和JButton正确地做了一切,但我发现你不能逐行改变字符串的颜色。

我读过应该使用JTextPane,但我还没有能够使用它。 这是我写的代码:

public class Example {

   public Example() {
        JFrame frame = new JFrame();
        JTextPane pane = new JTextPane();
        JButton button = new JButton("Button");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pane.setPreferredSize(new Dimension(200, 200));
        frame.add(pane);
        frame.add(button);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Example();
    }
}

当我运行程序时,这就是创建的内容:

enter image description here

TextPane在哪里?

另外,在我使用append()在JTextArea中添加文本之前,我还没有找到与JTextPane类似的方法吗?你如何使用它? 如何更改单行的颜色?

我已经阅读并看过并试过在互联网上找到的各种例子,但我无法完成任何事情...... 有类似的例子吗?

我为" generic"道歉请求...

由于

3 个答案:

答案 0 :(得分:3)

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class Example {

    public Example() {

        JFrame frame = new JFrame();
        JTextPane pane = new JTextPane();;
        JButton button = new JButton("Button");

        addColoredText(pane, "Red Text\n", Color.RED);
        addColoredText(pane, "Blue Text\n", Color.BLUE);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pane.setPreferredSize(new Dimension(200, 200));
        frame.getContentPane().add(pane, BorderLayout.CENTER);
        frame.getContentPane().add(button, BorderLayout.WEST);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Example();
    }

    public void addColoredText(JTextPane pane, String text, Color color) {
        StyledDocument doc = pane.getStyledDocument();

        Style style = pane.addStyle("Color Style", null);
        StyleConstants.setForeground(style, color);
        try {
            doc.insertString(doc.getLength(), text, style);
        } 
        catch (BadLocationException e) {
            e.printStackTrace();
        }           
    }
}

试试这个例子

答案 1 :(得分:2)

这是一个更好的开始:

for l=1,level do --this line

这是非常基本的,但应该让你开始。当您必须添加文本并级联颜色时,可以创建不同的方法。

答案 2 :(得分:0)

我建议你查看JavaFX,它有一个更好的用户界面。 但是,您已经在使用JPanel和JButton。您可以使用JLabel显示所需的文本,并使用JLabel.setTextFill(Color.WHITESMOKE)设置文本的颜色。