学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开发文本编辑器手记之行号显示相关推荐

  1. 富文本在服务器上图片不显示,解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题...

    关于解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题. 本文可能会对以下现象得以解决: 图片上传组件,没有 [上传] 选项卡. 资源无法加载 [imgupload] ( ...

  2. 《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.3节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. [译] 为数字优先新闻编辑室开发文本编辑器

    原文地址:Building a Text Editor for a Digital-First Newsroom 原文作者:Sophia Ciocca 译文出自:掘金翻译计划 本文永久链接:githu ...

  4. 在mac上命令行里面如何打开文本编辑器?

    在mac上命令行里面如何打开文本编辑器?   在linux命令行terminal上使用gedit直接就可以打开文本文件 那么在mac上面如何操作呢? 使用:open -a TextEdit setti ...

  5. 文本编辑器中命令行参数的应用

    文章目录 1 文本编辑器中命令行参数的应用 1 文本编辑器中命令行参数的应用 我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢? 主要有如下两种 ...

  6. java简单文本编译器_java -简易文本编辑器

    import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; /** * Title:java ...

  7. idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...

    IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合. ...

  8. vb.net中report不显示中文_Ubuntu中vi文本编辑器的使用

    最近在使用ubuntu,对于一个已经熟悉centos下的vi编辑器来说,简直是太变态了,各种不习惯.下面给大家分享下Ubuntu下的vi编辑器详细用法. Ubuntu中vi文本编辑器的使用 :w !s ...

  9. java umeditor使用,百度UMeditor富文本编辑器java使用

    百度UMeditor富文本编辑器java使用 1.介绍 UMeditor 是一款轻量级的富文本编辑器,比UEditor要小得多,是为满足广大门户网站对于简单发帖框,或者回复框需求所定制的在线富文本编辑 ...

最新文章

  1. java数组排序之冒泡排序
  2. CCF 2016年题目题解 - Python
  3. 剪切粘贴时总是上次的内容_【Procreate 迷你课堂】#4 三指快速拷贝及粘贴
  4. 宣布 Windows Azure 通过 PCI DSS 合规性验证并且 ISO 认证范围扩大,同时正式发布 Windows Azure Hyper-V 恢复管理器和其他更新功能...
  5. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc
  6. spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...
  7. java获取类名不包括路径
  8. canvas学习和滤镜实现
  9. 137. 只出现一次的数字 II
  10. Windows 2012 英文版系统安装中文语言包及时间格式设置
  11. 2天驾驭div+css_老婆竟然只知道几个css伪类,不行得惩罚她了
  12. 人之间的尊重是相互的_人与人之间,尊重很重要
  13. 手机当中的wifi功能是什么意思?
  14. 基于DEAP库的python进化算法--遗传算法实践--最短路径问题
  15. ui uview 安卓开发_HarmonyOS 2.0手机开发者Beta公测招募
  16. 调用阿里云身份证识别服务识别本地图片,很详细,附工具类
  17. python dbf 修改_Python修改DBF文件指定列
  18. 解决知乎页面打印时下方文字被遮挡的问题
  19. tcpip命令全面汇总
  20. 优恩-关于ESD管(ESD静电二极管)的产品特性

热门文章

  1. 基于JAVA+SpringMVC+Mybatis+MYSQL的电影院订票系统
  2. 北斗轨迹记录_北斗定位+智慧4G视频校车行业解决方案
  3. 数据的统计分析与描述
  4. linux命令详解——tee
  5. careercup-递归和动态规划 9.2
  6. 每日记载内容总结39
  7. OpenShift Redhat的使用和介绍
  8. 新型计算机作文1000,科技作文1000字(精选3篇)
  9. 计算机数学基础知识点归纳,《计算机数学基础》(一)――离散数学期末复习参考...
  10. (篇七)输入任意个数字,输出最大值最小值,且进行排序排序