我在我的应用程序中使用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);
}
答案 0 :(得分:7)
使用DocumentFilter
。您可以检查在位置编辑中是否允许使用sert(或remove)
参见例如this
答案 1 :(得分:4)
要实现此效果,您需要实施StyledDocument
(尝试扩展DefaultStyledDocument
)。在那里,维护一个不可编辑的文本部分列表,并拒绝在insertString()
和remove()
例如,当offset
位于其中一个不可编辑的范围内时,只需从insertString()
返回,而不进行更改。
当用户尝试删除文字时,只删除remove()