JavaFX2 - 文本可复制的Label
背景介绍
我的公司和我个人一直都使用JavaFX2来编写client应用程序,同一时候也作为Applet在浏览器中执行。
我们的客户以前拿我们的产品和网页对照,然后向我们提过两个需求:
(1) 希望界面上全部的文字都能够被复制。尤其是界面中的一些有參考意义的文字(而这些文字不可被编辑也不须要被编辑)
(2) 希望能够打印界面的内容,乃至滚动栏中没有显示出来的内容
遗憾的是,以上两点我都没能非常好的解决。以后在这双方面我还会继续学习和研究。
文本可复制的Label方案
今天这篇文章主要说的是怎样让Label中的文本能够被复制。实际上,Label的文本是不能被复制的。
(1) 给Label加右键菜单。点击Copy菜单实现对文本的总体复制,但这不是常规意义上的复制
(2) 还有一个替代的解决方式就是使用TextField,对其外观进行改进。使得看起来像Label。
针对第(2)种方案。先看效果:
图1 TextField本身的效果
图2 改进后类似Label且可复制的效果
代码很easy,例如以下:
代码片段1 初始化TextField
TextField field = new TextField("This is a copyable label which is implemented by a TextField.");
field.setEditable(false);
field.getStyleClass().add("copyablelabel");
代码片段2 为TextField设置CSS
.copyablelabel{
-fx-background-color: transparent;
}
重点就在-fx-background-color: transparent;
让TextField的边框和背景都消失了。
留点作业
最后,这里还有个缺陷,TextField不能换行显示多行文本,而Label是能够换行显示多行文本的。
在这里,你可能已经想到了TextArea。以我眼下的研究,我要遗憾的说。TextArea不行,TextArea的高度不能随文本的多少而自适应高度。
TextArea的高度是预设的。文本超出高度会出滚动栏,而仅仅有一行文本时,其高度也不会降低。
你想到好办法了吗?
------------------------------------
欢迎訪问我的独立博客:
最新文章
- JDBC简介
- Python 5 —— OOP
- 共享你的控件 -- 用NuGet包装自己的控件
- UNIX Time 时间戳 与 北京时间 相互转换
- UVa 10003 (可用四边形不等式优化) Cutting Sticks
- 天津Uber优步司机奖励政策(1月25日~1月31日)
- CentOS下的svn强制用户提交时写日志
- DMA过程分析
- spring cloud+dotnet core搭建微服务架构:服务发现(二)
- html5 下拉刷新(pc+移动网页源码)
- Windows 2016 忘记密码的处理方法
- FireDac 组件说明二
- attr 修改IMG src
- c++ tricks
- spring 加载bean过程源码简易解剖(转载)
- Openflow1.3
- Codeforces Round #423 (Div. 2)
- lua学习笔记(十三)
- 调用bat文件执行java文件
- php数据结构课程---4、栈(是什么)