2

我在我的应用程序中使用 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);
}
4

2 回答 2

7

使用DocumentFilter. 您可以检查在位置编辑发生时是否允许插入(或删除)

例如看这个

于 2013-01-08T09:38:07.523 回答
4

要达到这个效果,需要实现StyledDocument(尝试扩展DefaultStyledDocument)。在那里,维护一个不可编辑的文本部分列表,并拒绝在其中更改insertString()它们remove()

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

当用户尝试删除文本时,仅删除受保护范围内的文本remove()

于 2013-01-08T09:30:49.077 回答