JTextArea中显示LineNumber

//package tryLineNumber;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point; 

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
//import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document; 

/**
  * A class illustrating running line number count on JTextPane. Nothing
is painted on the pane itself,
  * but a separate JPanel handles painting the line numbers. 
  *
  * @author Daniel Sj?blom 
  * Created on Mar 3, 2004 
  * Copyright (c) 2004 
  * @version 1.0 
  */
public class LineNr extends JPanel
{
        // for this simple experiment, we keep the pane + scrollpane as members.
        //JTextPane pane;
        JTextArea pane;
        JScrollPane scrollPane; 

        public LineNr()
        {
                super();
                setMinimumSize(new Dimension(30, 30));
                setPreferredSize(new Dimension(30, 30));
                setMinimumSize(new Dimension(30, 30));
                //pane = new JTextPane() // we need to override paint so that the linenumbers stay in sync
                pane = new JTextArea()
                {
                        public void paint(Graphics g)
                        {
                                super.paint(g);
                                LineNr.this.repaint();
                        }
                };
                scrollPane = new JScrollPane(pane); 

        }
        public void paint(Graphics g)
        {
                super.paint(g); 

                // We need to properly convert the points to match the viewport
                // Read docs for viewport
                int start =pane.viewToModel(scrollPane.getViewport().getViewPosition()); // starting pos in document
                int end =
                        pane.viewToModel(
                                new Point(
                                        scrollPane.getViewport().getViewPosition().x + pane.getWidth(),
                                        scrollPane.getViewport().getViewPosition().y + pane.getHeight()));
                // end pos in doc 

                // translate offsets to lines
                Document doc = pane.getDocument();
                int startline = doc.getDefaultRootElement().getElementIndex(start) + 1;
                int endline = doc.getDefaultRootElement().getElementIndex(end) + 1; 

                int fontHeight = g.getFontMetrics(pane.getFont()).getHeight();
                int fontDesc = g.getFontMetrics(pane.getFont()).getDescent();
                int starting_y = -1; 

                try
                {
                        starting_y = pane.modelToView(start).y -
scrollPane.getViewport().getViewPosition().y + fontHeight - fontDesc;
                }
                catch (BadLocationException e1)
                {
                        e1.printStackTrace();
                } 

                for (int line = startline, y = starting_y; line <= endline; y += fontHeight, line++)
                {
                        g.drawString(Integer.toString(line), 0, y);
                } 

        } 

        // test main
        public static void main(String[] args)
        {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.getContentPane().setLayout(new BorderLayout());
                final LineNr nr = new LineNr();
                frame.getContentPane().add(nr, BorderLayout.WEST);
                frame.getContentPane().add(nr.scrollPane, BorderLayout.CENTER);
                frame.pack();
                frame.setSize(new Dimension(400, 400));
                frame.show();
        } 

} 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索swing
, jtextarea
, import
, javax
scrollpane
jtextarea 显示最底部、jtextarea不显示、jtextarea显示、java中jtextarea、linenumber.py下载,以便于您获取更多的相关知识。

时间: 2025-01-02 03:04:25

JTextArea中显示LineNumber的相关文章

jtextarea的显示问题。

问题描述 我要在jtextarea里显示传送文件的进度.一个文件的时候用settext就可以了,多个文件的时候怎么显示,期望结果是一个文件进度占一行,每行各自更新.求个思路.jtextarea不行的话用别的也可以 解决方案 解决方案二:JProgress进度条啊!解决方案三:JProgressBar解决方案四:重点不是用什么来显示进度,而是怎么把多个文件的进度显示出来.我的jfame布局是空的,该怎么动态添加显示进度的组件.解决方案五:引用3楼ww01055的回复: 重点不是用什么来显示进度,而

制作自己的字库并在工程中显示

制作自己的字库并在工程中显示 此篇教程操作很复杂,但有着实用价值,可以用来提取网上下载的字库并制作自己的字库拿到工程项目中去显示.有时候加载自定义中文字体会非常大,动辄8-9M大小的中文字库还是很占大小的,而我们也只需要里面的几个汉字,这篇博文就是做这事情的. 首先是制作字体篇 1. 下载工具 2. 下载字体 3. 将字体导入到工具中,并根据汉字查找出汉字 4. 新建自己的字体 5. 查找出游贤明3个字的字符,并复制粘贴,赋值代码点以及名称 6. 导出为ttf字体 这样子就制作好自定义字体了.

jsp-JSP页面中显示Action传入list

问题描述 JSP页面中显示Action传入list Action List list=newsdao.findall(); //执行dao方法 request.setAttribute("newslist", list); //保存到request方便前台调用 JSP**JSP** List newslist=(List)request.getAttribute("newslist"); // 取request里面的对象队列 if(newslist.size()!=

为何不能在viewDidLoad方法中显示其他视图

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 你可以使得当视图控制器(view controller)显示自身的时候显示分享选项控制器.你视图控制器的viewDidAppear方法将在它显示在屏幕上的时候被调用,并且在你App中的所有继承体系中的视图都是如此.这意味着你可以用这个机会在你的视图控制器视图上面显示其他视图. 不要试图在你的视图控制器的viewDidLoad方法中显示活动视图控制器(activ

ie 11-如何在iE f12(审查元素) 中显示after和before节点

问题描述 如何在iE f12(审查元素) 中显示after和before节点 如何在iE f12(审查元素) 中显示after和before节点怎么像chrome和Firefox一样在dom资源管理器里显示after和before节点及其样式?? 解决方案 css :before :after伪元素::after和::before伪元素::after和::before

web 访问的jsp ,在浏览器中显示.rf

问题描述 web 访问的jsp ,在浏览器中显示.rf 应该是 http://localhost:8086/fjagri/main.jsp 在浏览器显示 http://localhost:8086/fjagri/main.rf 解决方案 http://hujin1123.iteye.com/blog/255064http://blog.sina.com.cn/s/blog_4ff708110100pxui.html

在FeedSky中显示AdSense for Feeds

前些天Google发布了AdSense for Feed,让广大博客可以在Feed中插入AdSense广告来赚钱了,如果博客发布Feed使用的是FeedBurner,那么将FeedBurner和AdSense帐号合并后即可直接在Feed中显示Adsense广告.不过如果使用的是FeedSky来发布Feed,那就无法使用AdSense,不过通过一些简单的步骤,也可以在FeedSky中显示Adsense for Feed的广告. 首先,要有一个FeedBurner的帐号,并将FeedBurner帐号

如何在静态页面中显示文章被阅读的次数

静态|显示|页面 在文章发布系统中采用服务器端生成静态页面的方法可以有效减轻服务器的负担,特别是对大流量网站非常有效.但是既然生成的是静态页面,生成时是什么样,显示就是什么样了,对于文章常见文章被阅读次数怎么显示呢? 经考虑,可用如下方案解决: 生成静态页面时会产生一个文章的id存到数据库中,那么我们在制作文章的模板的时候就可以在这个文章的id上做文章,文章模板包含以下语句:   <SCRIPT src="counter.asp?newsId=<%=#newsId#%>&quo

特效:在网页中显示可拖动的月历

可拖动|特效|网页|显示      使用本文提供的javascript脚本,配合Dreamweaver的层和行为的运用,可以在页面中显示可拖动的精美月历. 具体制作步骤如下: 1.启动Dreamweaver MX,新建一个HTML文档,切换到代码视图,编写javascript脚本. (1)在HTML文档的< head>...< /head>插入下面的javascript脚本: < SCRIPT LANGUAGE="javascript" TYPE=&quo