java显示行号_java开发文本编辑器手记之行号显示
学java编程一段时间了,想利用java swing开发一个桌面的文本编辑器程序,首先想要实现的便是显示行号的功能,由于要实现一些关键词着色功能,选择了JTextPane,其实还有一个JEditorPane也可以设定颜色属性的,但JTextPane是继承JEditorPane的,貌似功能应该更强大些。。接下来就是如何在JTextPane上实现行号显示的功能了,首先第一个念头是在一个JTextPane中实现实时输入内容后计算行数,每行行号显示在行首处,说得容易,实际操作并不如此,因为你要考虑用户进行删除单词等一系列的操作,而且这么做的话文本框里的内容连行号也包括了,当要输出为一个文件时就麻烦了,你还要想办法去掉那些被当做文本内容的行号!
还有什么办法呢?经思考最终决定使用两个JTextPane,一个作为文本输入框,一个作为行号栏,大体如下,使用一个JFrame,JFrame使用BorderLayout布局,行号栏布局在BorderLayout.WEST,文本输入框布局在CENTER,这样就ok了,其中有一个发现要注意的是,要想行号栏上的行号与右边文本框的每一行内容对齐,得用一样的字体颜色属性.....
以下分享一些代码用于常见的获取文本行数等属性...
public class DocAttribute
{
//返回光标所在列
public static int getColumnAtCaret(JTextComponent component)
{
int caretPosition = component.getCaretPosition();
Element root = component.getDocument().getDefaultRootElement();
int line = root.getElementIndex( caretPosition );
int lineStart = root.getElement( line ).getStartOffset();
return caretPosition - lineStart + 1;
}
//获取指定行的第一个字符位置
public static int getLineStart(JTextComponent component,int line)
{
int lineNumber = line - 1;
Element root = component.getDocument().getDefaultRootElement();
int lineStart = root.getElement( lineNumber ).getStartOffset();
return lineStart;
}
//返回选中的字符数
public static int getSelectedNumber(JTextComponent component)
{
if( component.getSelectedText() == null )
return 0;
else
return component.getSelectedText().length();
}
//返回光标所在行
public static int getLineAtCaret(JTextComponent component)
{
int caretPosition = component.getCaretPosition();
Element root = component.getDocument().getDefaultRootElement();
return root.getElementIndex( caretPosition ) + 1;
}
//返回文本行数
public static int getLines(JTextComponent component)
{
Element root = component.getDocument().getDefaultRootElement();
return root.getElementCount();
}
//返回文本框的字符总数
public static int getCharNumber(JTextComponent component)
{
Document doc = component.getDocument();
return doc.getLength();
}
java显示行号_java开发文本编辑器手记之行号显示相关推荐
- 富文本在服务器上图片不显示,解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题...
关于解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题. 本文可能会对以下现象得以解决: 图片上传组件,没有 [上传] 选项卡. 资源无法加载 [imgupload] ( ...
- 《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式
本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.3节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- [译] 为数字优先新闻编辑室开发文本编辑器
原文地址:Building a Text Editor for a Digital-First Newsroom 原文作者:Sophia Ciocca 译文出自:掘金翻译计划 本文永久链接:githu ...
- 在mac上命令行里面如何打开文本编辑器?
在mac上命令行里面如何打开文本编辑器? 在linux命令行terminal上使用gedit直接就可以打开文本文件 那么在mac上面如何操作呢? 使用:open -a TextEdit setti ...
- 文本编辑器中命令行参数的应用
文章目录 1 文本编辑器中命令行参数的应用 1 文本编辑器中命令行参数的应用 我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢? 主要有如下两种 ...
- java简单文本编译器_java -简易文本编辑器
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; /** * Title:java ...
- idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...
IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合. ...
- vb.net中report不显示中文_Ubuntu中vi文本编辑器的使用
最近在使用ubuntu,对于一个已经熟悉centos下的vi编辑器来说,简直是太变态了,各种不习惯.下面给大家分享下Ubuntu下的vi编辑器详细用法. Ubuntu中vi文本编辑器的使用 :w !s ...
- java umeditor使用,百度UMeditor富文本编辑器java使用
百度UMeditor富文本编辑器java使用 1.介绍 UMeditor 是一款轻量级的富文本编辑器,比UEditor要小得多,是为满足广大门户网站对于简单发帖框,或者回复框需求所定制的在线富文本编辑 ...
最新文章
- java数组排序之冒泡排序
- CCF 2016年题目题解 - Python
- 剪切粘贴时总是上次的内容_【Procreate 迷你课堂】#4 三指快速拷贝及粘贴
- 宣布 Windows Azure 通过 PCI DSS 合规性验证并且 ISO 认证范围扩大,同时正式发布 Windows Azure Hyper-V 恢复管理器和其他更新功能...
- 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc
- spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...
- java获取类名不包括路径
- canvas学习和滤镜实现
- 137. 只出现一次的数字 II
- Windows 2012 英文版系统安装中文语言包及时间格式设置
- 2天驾驭div+css_老婆竟然只知道几个css伪类,不行得惩罚她了
- 人之间的尊重是相互的_人与人之间,尊重很重要
- 手机当中的wifi功能是什么意思?
- 基于DEAP库的python进化算法--遗传算法实践--最短路径问题
- ui uview 安卓开发_HarmonyOS 2.0手机开发者Beta公测招募
- 调用阿里云身份证识别服务识别本地图片,很详细,附工具类
- python dbf 修改_Python修改DBF文件指定列
- 解决知乎页面打印时下方文字被遮挡的问题
- tcpip命令全面汇总
- 优恩-关于ESD管(ESD静电二极管)的产品特性
热门文章
- 基于JAVA+SpringMVC+Mybatis+MYSQL的电影院订票系统
- 北斗轨迹记录_北斗定位+智慧4G视频校车行业解决方案
- 数据的统计分析与描述
- linux命令详解——tee
- careercup-递归和动态规划 9.2
- 每日记载内容总结39
- OpenShift Redhat的使用和介绍
- 新型计算机作文1000,科技作文1000字(精选3篇)
- 计算机数学基础知识点归纳,《计算机数学基础》(一)――离散数学期末复习参考...
- (篇七)输入任意个数字,输出最大值最小值,且进行排序排序