再见西城 发表于 2015-1-18 11:34:35

了解下JAVA的JTextArea中显现LineNumber

没有那个大公司会傻了吧唧用.net网页编程开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net网页编程不行,限制在window系统,又是捆绑,鄙视微软之!
//packagetryLineNumber;

importjava.awt.BorderLayout;
importjava.awt.Dimension;
importjava.awt.Graphics;
importjava.awt.Point;


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


/**
*AclassillustratingrunninglinenumbercountonJTextPane.Nothing
ispaintedonthepaneitself,
*butaseparateJPanelhandlespaintingthelinenumbers.
*
*@authorDanielSj?blom
*CreatedonMar3,2004
*Copyright(c)2004
*@version1.0
*/
publicclassLineNrextendsJPanel
{
//forthissimpleexperiment,wekeepthepane+scrollpaneasmembers.
//JTextPanepane;
JTextAreapane;
JScrollPanescrollPane;


publicLineNr()
{
super();
setMinimumSize(newDimension(30,30));
setPreferredSize(newDimension(30,30));
setMinimumSize(newDimension(30,30));
//pane=newJTextPane()//weneedtooverridepaintsothatthelinenumbersstayinsync
pane=newJTextArea()
{
publicvoidpaint(Graphicsg)
{
super.paint(g);
LineNr.this.repaint();
}
};
scrollPane=newJScrollPane(pane);


}
publicvoidpaint(Graphicsg)
{
super.paint(g);


//Weneedtoproperlyconvertthepointstomatchtheviewport
//Readdocsforviewport
intstart=pane.viewToModel(scrollPane.getViewport().getViewPosition());//startingposindocument
intend=
pane.viewToModel(
newPoint(
scrollPane.getViewport().getViewPosition().x+pane.getWidth(),
scrollPane.getViewport().getViewPosition().y+pane.getHeight()));
//endposindoc


//translateoffsetstolines
Documentdoc=pane.getDocument();
intstartline=doc.getDefaultRootElement().getElementIndex(start)+1;
intendline=doc.getDefaultRootElement().getElementIndex(end)+1;


intfontHeight=g.getFontMetrics(pane.getFont()).getHeight();
intfontDesc=g.getFontMetrics(pane.getFont()).getDescent();
intstarting_y=-1;


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


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


}

//testmain
publicstaticvoidmain(String[]args)
{
JFrameframe=newJFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(newBorderLayout());
finalLineNrnr=newLineNr();
frame.getContentPane().add(nr,BorderLayout.WEST);
frame.getContentPane().add(nr.scrollPane,BorderLayout.CENTER);
frame.pack();
frame.setSize(newDimension(400,400));
frame.show();
}

}
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。

精灵巫婆 发表于 2015-1-21 10:25:10

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

小妖女 发表于 2015-1-21 10:54:19

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

灵魂腐蚀 发表于 2015-1-24 15:57:11

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

乐观 发表于 2015-2-2 07:44:52

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

柔情似水 发表于 2015-2-7 16:59:32

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

不帅 发表于 2015-2-11 08:22:18

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

若天明 发表于 2015-3-2 01:34:56

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

活着的死人 发表于 2015-3-11 01:41:37

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

莫相离 发表于 2015-3-17 18:09:35

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

小魔女 发表于 2015-3-19 01:22:06

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

若相依 发表于 2015-3-26 20:21:41

是一种突破用户端机器环境和CPU

只想知道 发表于 2015-4-16 22:51:11

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

飘飘悠悠 发表于 2015-4-17 04:52:44

是一种语言,用以产生「小应用程序(Applet(s))

愤怒的大鸟 发表于 2015-4-25 10:34:30

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

兰色精灵 发表于 2015-4-28 11:23:03

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

变相怪杰 发表于 2015-5-1 13:10:30

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

透明 发表于 2015-5-3 15:54:33

是一种语言,用以产生「小应用程序(Applet(s))

再见西城 发表于 2015-5-10 22:28:14

是一种为 Internet发展的计算机语言

飘灵儿 发表于 2015-6-22 04:08:04

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
页: [1]
查看完整版本: 了解下JAVA的JTextArea中显现LineNumber