【问题标题】:How to disable text selection on JTextArea Swing如何在 JTextArea Swing 上禁用文本选择
【发布时间】:2016-07-06 16:52:01
【问题描述】:

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

【问题讨论】:

  • 您想禁用“选择”支持
  • 我不知道你能不能,你可以让选择背景与文本区域的背景颜色相同,选择前景与文本区域的前景颜色相同,这将“蒙版”它。或者,您可以使用 JLabel 并将文本包装在 <html>...</html> 中,这可能会为您提供一些文本包装功能,而无需选择或可编辑
  • @MadProgrammer:这是特例,我必须强制使用TextArea,但我不希望作者选择textarea上的文字......
  • “你能给我建议吗。” 不要尝试这种愚蠢的事情。您对抑制用户选择在应用程序中看到的信息的能力有什么兴趣。?我敢打赌,无论目标是什么,抑制用户选择文本的能力都无法实现..

标签: java swing


【解决方案1】:

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

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();
            }
        });
    }
}

【讨论】:

    【解决方案2】:

    如果您只想在任何摇摆控件(例如 JtextArea)上禁用文本选择,您可以使用以下代码:

    JtextArea.setHighlighter(null);
    

    这一行代码将有助于禁用文本选择,并且可以放置在构造函数中,也可以放置在 Frame 执行时的初始化方法中。

    希望对你有帮助

    【讨论】:

    • 这会禁用高亮文本的视觉显示,但不会禁用文本选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2012-09-01
    • 2013-04-11
    • 2021-05-15
    • 1970-01-01
    • 2013-09-09
    • 2012-11-13
    相关资源
    最近更新 更多