Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JTextArea Swing上禁用文本选择_Java_Swing - Fatal编程技术网

Java 如何在JTextArea Swing上禁用文本选择

Java 如何在JTextArea Swing上禁用文本选择,java,swing,Java,Swing,我不希望用户选择JTextArea上的内容。我使用了setEditable(false),但它不起作用。如何禁用JTextArea组件的此功能。你能给我一些建议吗。谢谢 您可以将“标记”设置为插入符号的“点”。当这些值相等时,没有文本选择: import java.awt.*; import javax.swing.*; import javax.swing.text.*; public class NoTextSelectionCaret extends DefaultCaret {

我不希望用户选择
JTextArea
上的内容。我使用了
setEditable(false)
,但它不起作用。如何禁用
JTextArea
组件的此功能。你能给我一些建议吗。谢谢

您可以将“标记”设置为插入符号的“点”。当这些值相等时,没有文本选择:

import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;

public class NoTextSelectionCaret extends DefaultCaret
{
    public NoTextSelectionCaret(JTextComponent textComponent)
    {
        setBlinkRate( textComponent.getCaret().getBlinkRate() );
        textComponent.setHighlighter( null );
    }

    @Override
    public int getMark()
    {
        return getDot();
    }

    private static void createAndShowUI()
    {
        JTextField textField1 = new JTextField("No Text Selection Allowed");
        textField1.setCaret( new NoTextSelectionCaret( textField1 ) );
        textField1.setEditable(false);

        JTextField textField2 = new JTextField("Text Selection Allowed");

        JFrame frame = new JFrame("No Text Selection Caret");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(textField1, BorderLayout.NORTH);
        frame.add(textField2, BorderLayout.SOUTH);
        frame.pack();
        frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

如果只想禁用任何swing控件(如
JtextArea
)上的文本选择,可以使用以下编码:

JtextArea.setHighlighter(null);
这一行代码将有助于禁用文本选择,并且可以在执行帧时放置在构造函数中或初始化方法中


希望这有帮助

您想禁用“选择”支持我不知道是否可以,您可以使选择背景与文本区域的背景颜色相同,而选择前景与文本区域的前景颜色相同,这将“屏蔽”它。或者,您可以使用
JLabel
并在
..
中包装文本,这可能会为您提供一些文本包装功能,而无需选择或编辑editabity@MadProgrammer:这是特殊情况,我必须强制使用TextArea,但我不希望作者选择TextArea上的文本…“您能给我一些建议吗?”不要做这种傻事。您对禁止用户选择应用程序中显示的信息感兴趣的是什么。?我敢打赌,无论目标是什么,抑制用户选择文本的能力都无法实现。。