自考JAVA语言程序设计(一)课后习题答案和源代码(第九章).doc
《自考JAVA语言程序设计(一)课后习题答案和源代码(第九章).doc》由会员分享,可在线阅读,更多相关《自考JAVA语言程序设计(一)课后习题答案和源代码(第九章).doc(13页珍藏版)》请在冰豆网上搜索。
![自考JAVA语言程序设计(一)课后习题答案和源代码(第九章).doc](https://file1.bdocx.com/fileroot1/2022-10/19/42faca2e-3bb5-405c-b86e-3f5085de1564/42faca2e-3bb5-405c-b86e-3f5085de15641.gif)
第九章
2.一个文本,一个按钮。
在文本区中输入数据,点击按钮,将文本内容输出到文件。
文件通过文件保存对话框制定。
程序运行结果:
保存文件的源文件:
SaveFile.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
/**
*9.2一个文本,一个按钮。
*在文本区中输入数据,点击按钮,将文本内容输出到文件。
*文件通过文件保存对话框制定。
*@author黎明你好
*/
publicclassSaveFileextendsJFrameimplementsActionListener
{
privatestaticfinallongserialVersionUID=1L;//序列化时为了保持版本的兼容性
privateJFileChooserfileChooser;//文件选择对话框
privateJPanelnorthPanel;//布局用的
privateJButtonsaveFileButton;//保存按钮
privateJLabellabel;//用来显示文件的绝对路径
privateJTextAreatextArea;//文本框
publicSaveFile()
{
super("第九章,第二题-保存文件");
label=newJLabel("");
fileChooser=newJFileChooser();
northPanel=newJPanel();
saveFileButton=newJButton("保存到文件");
textArea=newJTextArea();
textArea.setLineWrap(true);
saveFileButton.addActionListener(this);
northPanel.add(saveFileButton);
this.add(northPanel,BorderLayout.NORTH);
this.add(newJScrollPane(textArea),BorderLayout.CENTER);
this.add(label,BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(50,50,500,500);
this.setVisible(true);
this.validate();
}
publicvoidactionPerformed(ActionEvente)//监听器方法
{
if(e.getSource()==saveFileButton)
{
intmessage=fileChooser.showSaveDialog(this);
if(message==JFileChooser.APPROVE_OPTION)
{
Filefile=fileChooser.getSelectedFile();
label.setText("保存到:
"+file.getAbsolutePath());//在label上显示这个文件的绝对路径
this.setTitle(file.getName());//设置JFrame的title为文件的名字
saveFile(file);
}
else
{
label.setText("没有文件被选中");
}
}
}
/**
*把文本区上的内容保存到指定文件上
*@paramf-保存到的文件对象
*/
publicvoidsaveFile(Filef)
{
try
{
FileWriterfile=newFileWriter(f);
BufferedWriterout=newBufferedWriter(file);
out.write(textArea.getText(),0,textArea.getText().length());
out.close();
}
catch(Exceptione)
{
label.setText("写文件发生错误");
}
}
publicstaticvoidmain(String[]args)
{
newSaveFile();
}
}
3.在一个文件中,每行存的是整数,各行整数个数不等,要求读这个文件,然后计算每行整数的和,并存到另一个文件中。
程序运行结果:
计算文件中的整数和源文件:
FileIntegerSum.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.*;
/**
*9.3在一个文件中,每行存的是整数,各行整数个数不等,
*要求读如这个文件,然后计算每行整数的和,并存到另一个文件中。
*@author黎明你好
*
*/
publicclassFileIntegerSumextendsJFrameimplementsActionListener
{
privatestaticfinallongserialVersionUID=1L;
privateJButtonbuttonSave,buttonCount,buttonOpen;//按钮:
保存,计算,保存
privateJTextAreatextArea;//文本区
privateJLabellabel;//显示当前文件的绝对路径的label
privateJFileChooserfiledialog;//文件选择对话框
privateJPanelpanel;//布局用的panel
privateFilefile=null;//文件对象
publicFileIntegerSum()
{
super("第九章,第三题-整数求和");
buttonOpen=newJButton("打开文件");
buttonSave=newJButton("保存到...");
buttonCount=newJButton("计算结果");
label=newJLabel("");
panel=newJPanel();
textArea=newJTextArea();
filedialog=newJFileChooser();
filedialog.addChoosableFileFilter(newMyFileFilter("txt"));
buttonOpen.addActionListener(this);
buttonSave.addActionListener(this);
buttonCount.addActionListener(this);//给按钮加监控
panel.add(buttonOpen);
panel.add(buttonCount);
panel.add(buttonSave);//把按钮添加到panel面板上
this.add(panel,BorderLayout.NORTH);
this.add(newJScrollPane(textArea),BorderLayout.CENTER);
this.add(label,BorderLayout.SOUTH);
this.setBounds(50,50,500,300);
this.validate();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==buttonOpen)
{
filedialog.setDialogTitle("打开");
intresult=filedialog.showOpenDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{
file=filedialog.getSelectedFile();
label.setText(""+file.getAbsolutePath());
readFiletoText(file);
}
elseif(result==JFileChooser.CANCEL_OPTION)
label.setText("你没有选择任何文件\n");
}
if(e.getSource()==buttonSave)
{
filedialog.setDialogTitle("另存为");
intresult=filedialog.showSaveDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{
file=filedialog.getSelectedFile();
label.setText(""+file.getAbsolutePath());
saveAsText(file);
}
elseif(result==JFileChooser.CANCEL_OPTION)
{
label.setText("你没有选择任何文件\n");
}
}
if(e.getSource()==buttonCount)
{
textArea.setText(null);
if(this.file!
=null)
countResult(file);
}
}
/**
*将指定的文件显示在文本区上
*@paramfile-指定的文件
*/
publicvoidreadFiletoText(Filefile)
{
try
{
FileReaderfile_reader=newFileReader(file);
BufferedReaderin=newBufferedReader(file_reader);
Stringss=newString();
while((ss=in.readLin