📄 使用java swing创建一个xml编辑器之二.txt
字号:
refreshButton.addActionListener( this );
getContentPane().add( refreshButton, BorderLayout.NORTH );
代码段5:
public void actionPerformed( ActionEvent ae )
{
if ( ae.getActionCommand().equals( \"Refresh\" ) )
xTree.refresh( textArea.getText() );
}
接下来,我们将创建新的 JScrollPane和 JTextArea并且把 JTextArea添加到
JScrollPane中。这样,我们将得到包含 XTree组件的原始的 JScrollPane和包含
JTextArea组件的新的 JScrollPane。这个原始的
XTree构造程序还有一个修改之处。我们将删除先前传进这个方法的字符串参数。(该功能通过我们接下来要构建的另一个
XmlEditor()构造程序操作)我们把这两个方框放进一个
JSplitPane中,它是一个有分隔器的组件,可以在这个分隔器的另一边包含一个组件。(参见代码段6)。
代码段6:
jScroll = new JScrollPane();
jScrollRt = new JScrollPane();
textArea = new JTextArea( 200,150 );
jScrollRt.getViewport().add( textArea );
xTree = new XTree();
xTree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION );
xTree.setShowsRootHandles( true );
xTree.setEditable( false );
jScroll.getViewport().add( xTree );
splitPane = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT,
jScroll, jScrollRt );
splitPane.setOneTouchExpandable(true);
splitPane.setDividerLocation(200);
minimumSize = new Dimension(200, 150);
jScroll.setMinimumSize( minimumSize );
jScrollRt.setMinimumSize( minimumSize );
splitPane.setPreferredSize( new Dimension(400, 300) );
getContentPane().add( splitPane, BorderLayout.CENTER );
现在我们需要修改这个构造程序来处理这个非
XML文件的情景。删除当前构造程序需要的第二个字符串参数。这个构造程序现在就是默认的构造程序。我们将创建一个新的构造程序来接收一个字符串参数。它将先调用默认构造程序,然后处理这个参数。(参见代码段7
)而且,main()方法必须被修改以便在没有XML文件的事件中,仍然能创建一个默认的XmlEditor对象。(参见代码段8)
代码段7:
public XmlEditor( String title, ArrayList xmlText ) throws
ParserConfigurationException
{
this( title );
textArea.setText( ( String )xmlText.get( 0 ) + \"\\n\" );
for ( int i = 1; i < xmlText.size(); i++ )
textArea.append( ( String )xmlText.get( i ) + \"\\n\" );
xTree.refresh( textArea.getText() );
}
代码段8:
public static void main( String[] args )
{
String fileName = \"\";
BufferedReader reader;
String line;
ArrayList xmlText = null;
XmlEditor xmlEditor;
try
{
if( args.length > 0 )
{
fileName = args[0];
if ( fileName.substring( fileName.indexOf( \'.\' ) ).equals(
\".xml\" ) )
{
reader = new BufferedReader( new FileReader( fileName ) );
xmlText = new ArrayList();
while ( ( line = reader.readLine() ) != null )
{
xmlText.add( line );
}
reader.close();
xmlEditor = new XmlEditor( \"XmlEditor 1.0\", xmlText );
}
else
{
help();
}
}
else
{
xmlEditor = new XmlEditor( \"XmlEditor 1.0\" );
}
}
catch( FileNotFoundException fnfEx )
{
System.out.println( fileName + \" was not found.\" );
exit();
}
catch( Exception ex )
{
ex.printStackTrace();
exit();
}
}
为了很容易地处理
JTextArea数据,还需要最后一次必要的修改。一般我们不把这段文本当成一个长的字符串,而是把它当成一系列字符串,每行表示一个包含在数组列表中的字符串。这需要修改我们的构造程序接收的参数,并且修改在先前把这个数据作为一个字符串传入的那个main()方法中的任何调用。这还需要导入
java.util包 (参见代码段8 ) 。
测试这个应用程序
最后,我们必须添加一些异常处理到 XTree类中。如果你运行这个应用程序并输入无效的XML数据到
JTextArea中,这个程序就会崩溃。我们当然不想这样的事情发生。目前,我们把出错信息打印到命令行中。在下一篇文章中,我们将在一个图形对话框中显示出错信息。
如果无效的或格式不好的 XML数据被输入
JTextArea然后按“Refresh”按钮,然后解析器将抛出一个错误,在本例中,parseXML()方法中包含的当前异常处理将立即退出。我们想要这个程序报告这个错误并返回一个空值来指出这个解析是不成功的。(见代码段9)你可能注意到
XTree类中的“buildTree()”和“refresh()”这两个方法有一个条件语句以避免处理空值。这是因为如果它们试着去处理一个空值它们也会报告异常。这个事件链保持程序流进行并且保持
XTree模型稳定。
最后,我们就可以测试这个应用程序,测试过程我在这里就不多说了。
文章录入:admin 责任编辑:admin
上一篇文章: 使用Java Swing 创建一个XML编辑器(一)
下一篇文章: 使用Java Swing 创建一个XML编辑器(三)
【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
赛酷网络版权、投稿与免责申明:
1)凡本网署名文字、图片和音视频稿件,版权均属赛酷网络所有。任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本网协议授权的媒体、网站,在下载使用时必须注明“稿件来源:赛酷网络”,违者本网将依法追究责任。
2)本网注明“采编自”的文章均为转载稿,本网转载出于传递更多信息之目的。如本网转载稿涉及版权等问题,请作者在两周内速来电或来函与本网联系。
最新热点最新推荐相关文章
[组图]Photoshop唯美女孩变
[组图]色诱:揭秘封面"色"
[组图]万网域名管理平台操
[组图]Photoshop把生活照“
[组图]Photoshop打造超酷春
[组图]Photoshop把照片制作
[组图]Photoshop实例提高:
[组图]用Photoshop为美女照
[组图]用Photoshop还你照片
[组图]Photoshop轻松实现艺
GG优化之三——有效的页面
GG优化之二——优化通行方
GG优化之一——GG搜索引擎
个人网站赢利模式的选择
十条面向搜索引擎的网站优
两个域名共用一个空间的实
[组图]Photoshop滤镜简单打
[组图]用Photoshop还你照片
[组图]Photoshop轻松实现艺
使用md5sum创建文件指纹验证
使用NetFlow分析网络异常流量
使用NetFlow分析网络异常流量
使用NetFlow分析网络异常流量
使用NetFlow分析网络异常流量
使用NetFlow分析网络异常流量
使用NetFlow分析网络异常流量
使用NetFlow分析网络异常流量
使用虚拟机测试你的补丁
使用Exchange 2003防御地址欺
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
没有任何评论
联系我们 - 关于我们 - 广告商务 - 汇款帐号 - 工作机会 - 网站律师 - 合作伙伴 - 我要发布
地址:中国·昆明盘龙区丽水天锦A栋15楼A06 服务热线:0871-5610002 573237155693344 94030638
广告商务:sales#syku.net 客服:service#syku.net 帮助:help#syku.net
投诉:tousu#syku.net
业务资质:中国万网2006核心合作伙伴;动易网络深圳、昆明区域代理商
赛酷网络 版权所有 备案编号:滇ICP备05000398号
Copyright 2003-2006 赛酷网 Syku.Net
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -