Java 如何使JTextArea不可选择

Java 如何使JTextArea不可选择,java,swing,Java,Swing,我想显示一个文本区域,用于减少节点(图形项目)的值 但是每当我选择文本,它就会变得混乱,所以我希望它是不可检测的! 代码如下: public class TransparentTextArea extends JTextArea { String texte; public TransparentTextArea(String texte) { this.setLineWrap(true); this.setWrapStyleWord(true); this.text

我想显示一个文本区域,用于减少节点(图形项目)的值 但是每当我选择文本,它就会变得混乱,所以我希望它是不可检测的! 代码如下:

public class TransparentTextArea extends JTextArea {

String texte;

public TransparentTextArea(String texte) {
    this.setLineWrap(true);
    this.setWrapStyleWord(true);
    this.texte = texte;
    this.setBackground(new Color(255, 0, 9, 0));
    this.setFont(new Font("Serif", Font.ITALIC, 24));
    this.setEditable(false);
    this.setText(texte);
    this.setSize(new Dimension(200,100 ));
  } 
}

thx

如果您不想让
JTextArea
可选择,那么最简单的方法就是禁用它:

setEnabled(false);

这是一个老生常谈的问题,但对于那些仍然关心的人来说,禁用
JTextArea
并没有多大帮助,主要是因为前景是灰色的。最好的办法是取消荧光灯:

setHighlighter(null)

首先,我知道这是一篇很老的帖子,但我真的必须回答,因为我有同样的问题,找到了答案,并且给出的答案不是100%

Stelios说我们使用cat set
setHighlighter(null)但它仍然是可选的,我们甚至可以复制粘贴。并且不需要
setEnabled(false),尤其是当外观和感觉很糟糕时

我发现答案很简单

jtextPane.setEditable(false);
jtextPane.getCaret().deinstall(jtextPane);

设置文本区域的文本时,将取消选择所有文本。大概是这样的:

Thread t = new Thread(new Runnable() {
    while (true) {
        textArea.setText(textArea.getText());
    }
});
t.start();

我同意
setEnabled(false)
但是设置颜色是个坏主意。根据外观和感觉,黑色可能是一种突出的颜色。setEnabled false应该足够好。您的解决方案不可行。为什么我要有一个线程,没有任何控制,不断复制粘贴文本?这会让应用程序变得非常慢。这个想法不错,但是如果你这样做,然后用
选项卡导航到JTextArea,然后用
Ctrl+A
尝试选择文本,那么你会得到一个
NullPointerException
谢谢。我正在阅读你的答案,我发现这非常有用