从输入文本中自动解析各数字,并求和。单击save按钮,可将结果写入文件。
这里使用了嵌套布局方式设计界面。
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.*;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
class CalcFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = -1854831316194433442L;
JTextArea txtNums = null;
JTextField txtRes = null;
JButton btnCalc = null;
JButton btnSave = null;
CalcFrame( String title ) {
super( title );
Container cp = getContentPane();
cp.setLayout( new BorderLayout() );
JPanel txtPanel = new JPanel();
txtPanel.setLayout( new BorderLayout() );
txtNums = new JTextArea( 5, 20 );
txtRes = new JTextField();
txtRes.setText( "SUM = " );
txtRes.setEditable( false );
btnCalc = new JButton( "SUM" );
btnSave = new JButton( "Save" );
btnCalc.addActionListener( this );
btnSave.addActionListener( this );
JPanel btnPanel = new JPanel();
btnPanel.add( btnCalc );
btnPanel.add( btnSave );
JScrollPane sp = new JScrollPane( txtNums );
txtPanel.add( sp, BorderLayout.CENTER );
txtPanel.add( txtRes, BorderLayout.SOUTH );
cp.add( txtPanel, BorderLayout.CENTER );
cp.add( btnPanel, BorderLayout.SOUTH );
setSize( 300, 200 );
setLocation( 400, 300 );
setVisible( true );
pack();
}
@Override
public void actionPerformed(ActionEvent e) {
if( e.getSource() == btnCalc ) {
try {
StringTokenizer tokenizer = new StringTokenizer( txtNums.getText() );
int n = tokenizer.countTokens();
int sum = 0;
for( int i = 0; i < n; ++i ) {
sum += Integer.parseInt( tokenizer.nextToken() );
}
txtRes.setText( "SUM = " + sum );
}
catch( NumberFormatException ex ) {
System.out.println( "Type Error! " + ex );
}
catch( Exception e1 ) {
System.out.println( e1 );
}
}
else if( e.getSource() == btnSave ) {
JFileChooser saveDlg = new JFileChooser();
saveDlg.setDialogTitle( "Save File" );
int res = saveDlg.showSaveDialog( this );
if( res == JFileChooser.APPROVE_OPTION ) {
File file = saveDlg.getSelectedFile();
try {
BufferedWriter writer = new BufferedWriter( new FileWriter( file ) );
writer.write( txtRes.getText() );
writer.close();
}
catch( FileNotFoundException ex ) {
System.out.println( ex );
}
catch( IOException e1 ) {
System.out.println( e1 );
}
}
}
}
}
public class CalcSumDemo {
public static void main( String [] args ) {
new CalcFrame( "Calculate SUM" );
}
}