JTextArea中显示LineNumber - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-25
JTextArea中显示LineNumber时间:2007-05-30//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 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: java的性能 - 编程入门网下一篇: Java?D????Dò - ±à3ìè???í?
关于JTextArea中显示LineNumber - 编程入门网的所有评论