如何在Jtextpane中使用户无法编辑某些文本?

时间:2013-01-08 09:24:22

标签: java swing jtextpane

我在我的应用程序中使用Jtextpane。我需要添加一些标签 jtextpane中的[PKG-MEDIA]。 我希望用户不要编辑这个标签,而他可以在jtextpane中编辑其他文本。

  public static void main(String args[]) {
    JFrame j = new JFrame("Hello!");
    j.setSize(200, 200);
    JTextPane k = new JTextPane();
    k.setFont(new Font("Akshar Unicode Regular", Font.PLAIN, 17));
    k.setText("this is a test code [PKG-MEDIA]. I want to make this tag [PKG-1234] not editable");
    j.add(k);
    j.setVisible(true);
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

2 个答案:

答案 0 :(得分:7)

使用DocumentFilter。您可以检查在位置编辑中是否允许使用sert(或remove)

参见例如this

答案 1 :(得分:4)

要实现此效果,您需要实施StyledDocument(尝试扩展DefaultStyledDocument)。在那里,维护一个不可编辑的文本部分列表,并拒绝在insertString()remove()

内更改它们

例如,当offset位于其中一个不可编辑的范围内时,只需从insertString()返回,而不进行更改。

当用户尝试删除文字时,只删除remove()

中受保护范围周围的文字