textArea.getText() );
}
使用Java Swing创建一个XML编辑器之二(3)
时间:2010-12-16
接下来,我们将创建新的 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数据,还需要最后一次必要的修改。一般我们不把这段文本当成一个长的字符串,而是把它当成一系列字符串,每行表示一个包含在数组列表中的字符串。这需要修改我们的构造程序接收的参数,并且修改在先前把这个数据作为一个 |