首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当setEditable为false时,JTextArea显示插入符号

当setEditable为false时,JTextArea显示插入符号
EN

Stack Overflow用户
提问于 2011-08-30 12:45:23
回答 3查看 7.2K关注 0票数 10

如何在禁用setEditable的情况下将插入符号放入JTextArea?

当我需要Caret可见时的示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void run(){
    JFrame frame = new JFrame();
    JTextArea text = new JTextArea();
    text.setEditable(false);
    String line = "added line";
    text.append(line);
    text.setCaretPosition(text.getCaretPosition() + line.length());

    frame.getContentPane().add(text);
    frame.setSize(300,300);
    frame.setVisible(true);
}

我想要实现的是,当用户在TextArea中键入时,字符一定不能显示。键入的字符被重定向到OutputStream,并收到相应的InputStream,该are将显示在TextArea中。这可以很好地工作,但是因为setEditable(false)而隐藏了插入符号。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-30 13:12:04

text.getCaret().setVisible(true)和/或text.getCaret().setSelectionVisible(true)

票数 14
EN

Stack Overflow用户

发布于 2011-08-30 13:12:47

好吧,我在这里放了一个代码片段,它显示了插入符号,但不允许编辑JTextArea。我希望它能对你有所帮助。这是一个小把戏,用来处理文本区域的焦点,当焦点获得时,版本将被禁用;但当焦点丢失时,版本可能会被禁用。这样,用户就无法对其进行编辑,但可以看到插入符号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void run() {
    JFrame frame = new JFrame();
    final JTextArea text = new JTextArea();
    text.addFocusListener(new FocusListener() {

        public void focusLost(FocusEvent fe) {
            text.setEditable(true);     
        }

        public void focusGained(FocusEvent fe) {
            text.setEditable(false);
        }
    });
    text.setEditable(true);
    String line = "added line";
    text.append(line);
    text.setCaretPosition(text.getCaretPosition() + line.length());

    frame.getContentPane().add(text);
    frame.setSize(300,300);
    frame.setVisible(true);
}

请注意,用户可以移动插入符号,但不能编辑文本

票数 2
EN

Stack Overflow用户

发布于 2019-05-13 13:49:31

我尝试了最初由StanislavL提出的解决方案。然而,也出现了其他问题。例如,在离开JTextArea并稍后重新聚焦后,插入符号将再次变为不可见。

我怀疑插入符号并没有像大多数人期望的那样实现。虽然我看到一些作者提议重新实现插入符号,但我通过下面的小侦听器成功地实现了可见的插入符号行为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
textArea.getCaret().setVisible(true);
textArea.getCaret().setSelectionVisible(true);
textArea.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        textArea.getCaret().setVisible(true);
        textArea.getCaret().setSelectionVisible(true);
    }

    @Override
    public void focusLost(FocusEvent e) {
        textArea.getCaret().setSelectionVisible(true);
    }
});

在上面的示例中,我决定即使离开文本区也保持选择可见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7243339

复制
相关文章
java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享[通俗易懂]
这是我挺久以前课程设计java写的计算器,只能实现基本的功能,我现在分享出来希望能帮助到别人。写得其实挺一般的,见谅见谅。有课程设计任务的学弟学妹也是写计算器的可以看看参考参考。源代码里我写有挺多解析的,能帮助理解。
全栈程序员站长
2022/07/23
3.2K1
java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享[通俗易懂]
Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)
/* * 若尘 */ package demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.a
ruochen
2021/05/15
1.4K0
Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)
Java利用数组随机抽取幸运观众
#思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标得到幸运观众的名字。
葆宁
2019/04/19
1.9K0
Java利用数组随机抽取幸运观众
Java TCP通信概念及实例
              <1>TCP:类似于电话系统,建立双向的通信通道,确定连接,话音顺序接听。
Rekent
2018/09/04
7980
Java TCP通信概念及实例
Java---基于TCP协议的相互即时通讯小程序
这是几年前,新浪的一个面试题~要求是3天之内实现~ 通过TCP 协议,建立一个服务器端。
谙忆
2021/01/21
1.6K0
Java---基于TCP协议的相互即时通讯小程序
java Swing用户界面组件文本输入:文本域+密码域+格式化的输入域
现在终于可以开始介绍Swing用户界面组件了。首先,介绍具有用户输入和编辑文本功能的组件。文本域(JTextField)组件和文本区(JTextArea)组件用于获取文本输入。文本域只能接收单行文本输入而文本区可以接收多行文本输入。
愿天堂没有BUG
2022/10/28
4.1K0
java Swing用户界面组件文本输入:文本域+密码域+格式化的输入域
java课程设计-多人聊天工具(socket+多线程)
1.服务端能够看到所有在线用户 服务端继承了JFrame,实现可视化,通过socket实现服务端与客户端的连接,服务端每接收一个连接,把传进来的用户名和对应的socket连接封装成一个User对象,把User对象存进一个ArrayList的用户列表并把User对象通过取用户名方法取得用户名存进一个ArrayList的用户名列表,添加一个JPanel组件,将ArrayList中的内容通过循环显示JPanel中并布局在窗体的右边,在每当有人上线或者下线,刷新JPanel组件。 2.服务端能够强制用户下线 创建一个布局在窗体的下方的JPanel,在此JPanel中分别添加JLabel用于显示提示文字,添加JTextField用于获取服务端想要强制用户下线的ID,添加JButton用于绑定强制用户下线的事件监听,事件监听中将获取的JTextField的内容与用户名列表进行逐一匹配,匹配上则创建JSON格式的键值对对象,通过用户列表循环广播告知其他用户,并在用户列表和用户名列表中分别删除该用户信息。 3.客户端能够看到所有在线用户 客户端继承了JFrame,实现可视化,添加了一个布局在窗口右边的JPanel,把从服务端接收到的用户名列表中的信息放进去。 4.客户端要求能够向某个用户发送消息 客户端私发消息通过在消息后面加入-和目标用户名,传给服务端,服务端截取目标用户名,在用户名列表中判断是否存在此人,有则判断是否是私发,私发则向目标用户发送消息,没有则向全部用户发送消息。 5.运用JDBC实现持久化存储用户信息 数据库连接池运用了阿里巴巴的durid,定义一个JDBCUtils类,提供静态代码块加载配置文件,初始化连接池对象,通过Spring框架的JDBCTemplate对象进行sql语句的执行,在UserDao中提供了登录和注册方法,登录方法运用queryForObject方法进行登录查询,如果查到返回一个User对象,查不到则返回空,注册方法直接插入新记录,此处建表语句中把用户名设置成了主键,保证了用户名的唯一性,注册失败有警告弹窗提示。 这里加了一个ChatTest类用于绕过数据库账号校验,可以直接进入客户端进行连接。 6.使用JSONObject对象封装数据 在数据的传输中运用了键值对的形式进行传输,客户端传输给服务端的数据包中,通过判断private键的值来确认是否私发,通过username键告知服务端客户端的用户名,通过msg键传输具体消息,服务端传输给客户端的数据包中,通过判断user_list键的值来确认在线用户及人数 7.使用Maven构建管理项目 项目中运用到了JDBC相关内容和JSONObject对象,导入了一些依赖jar包,其中仓库和配置文件都是用的idea默认配置。
全栈程序员站长
2022/07/23
2.2K0
java课程设计-多人聊天工具(socket+多线程)
文件切割合并器&nbsp;4&nbsp;帮助类&nbsp;Help
public class Help extends InitFrame {
明明如月学长
2021/08/27
4030
用JavaSocket编程开发聊天室,附超详细注释
因为运行的过程中随时会有客户端连上服务器,所以服务器端需要一个线程来等待客户端的链接。其次,每一个服务器端的用户随时都有可能和服务器就发送消息,因此每新增一个用户就需要为该用户建立一个聊天的线程。 服务器端还需要具备踢人、群发消息、发送消息的功能。这些功能的本质其实就是发送对应格式消息(消息格式见下文),只是发送的消息格式不同罢了。
全栈程序员站长
2022/07/04
1.8K0
用JavaSocket编程开发聊天室,附超详细注释
mybatis当传入数据类型为Int时并且值为0时,会判断为空字符串
今天在mbatis中使用Xml配置sql语句时,出现了这样一个问题。当我传入的参数为0去做判断时,mybatis会把参数0当成是空字符串去判断而引起查询结果错误。
botkenni
2022/06/01
3.6K0
lunar="false",日历插件不显示农历
前面使用过组件uni-calendar,有的时候,在实现一个大点的效果的时候,为了使界面看上去更加的简洁,是不需要展示农历日期的,其实很简单,只需要将lunar="true" 改成lunar="false" 即可。
王小婷
2020/02/13
2.4K0
lunar="false",日历插件不显示农历
CCLabelAtlas的宽度为奇数时的显示bug
遇到一个很郁闷的bug,CCLabelAtlas设置文字内容在ipad上和android上正常,就只有iphone怎么显示都不正常。后来把它宽度 + 1,然后就正常了。发现以前宽度设置为21px、23px都有问题,+1px变为22px就正常了
meteoric
2018/11/19
5850
Collectors.toMap 当value为空时,报空指针
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors;
botkenni
2022/11/12
3.1K0
Collectors.toMap 当value为空时,报空指针
django debug=false 时的静态路由设置
把DEBUG从True改成False后就会出现404(必需指定404和500错语页面,如上图的目录结构)找不到页面的错误。原因是DEBUG为 True时django会默认帮我们处理静态文件,而为False的话还需要我们做点事。在全局usrs.py中加下如下代码:
一朵灼灼华
2022/08/05
7250
IL3002:当发布为单个文件时,避免调用
将应用发布为单个文件(例如将项目中的 PublishSingleFile 属性设置为 true)时,调用使用 RequiresAssemblyFilesAttribute 属性注释的成员与单文件不兼容。 这些调用可能不兼容,因为使用此属性注释的成员要求程序集文件位于磁盘上,而嵌入单文件应用的程序集已加载到内存中。
呆呆
2022/02/26
4580
为什么 Java 中 1000==1000 为 false ?
基本知识:我们知道,如果两个引用指向同一个对象,用 == 表示它们是相等的。如果两个引用指向不同的对象,用 == 表示它们是不相等的,即使它们的内容相同。
程序猿DD
2023/04/04
4140
为什么 Java 中 1000==1000 为 false ?
当网页图片不存在时不显示叉叉,显示默认图片的方法,管用的很!
有时候管理系统里面的产品图片没上传,或者因为网络原因传输过程中断了,图片没显示出来,就会显示一个叉叉,并且图片的占位符也不起作用了。昨晚上花了1个小时搜索、调试,验证了几种网络上的方法,最终有2种方法的确有效,鉴于代码优美的需要,我选择了如下一种。
崔文远TroyCui
2019/02/26
1.9K0
当AI泡沫破裂时……
很显然我们目前处于一个不稳定的状态。这到底是一场泡沫还是一次革命?答案是当然包含一点革命——深度神经架构所创造的实实在在的成功已经颠覆了视觉和语音识别领域,更通用的机器学习也已经有了大量真实世界用例。
刀刀老高
2018/07/24
3600
当AI泡沫破裂时……
很显然我们目前处于一个不稳定的状态。这到底是一场泡沫还是一次革命?答案是当然包含一点革命——深度神经架构所创造的实实在在的成功已经颠覆了视觉和语音识别领域,更通用的机器学习也已经有了大量真实世界用例。
机器之心
2018/07/26
3760
点击加载更多

相似问题

Java -如果JTextArea (SetEditable)不能向下滚动(False)

21

Swing JTextArea插入符号事件

20

如果新帧显示为真(False),如果用户关闭它,则为setEditable(true)

20

当ScreenUpdating为False时刷新范围显示

22

如何在JTextArea或JTextPane中显示多个插入符号

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文