import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
class FileChooserDemo1 implements ActionListener,TableModelListener
{
JFrame f = null;
JLabel label = null;
JTextField textField = null;
JFileChooser fileChooser = null;
JTable table = null;
MyTable mt = null;
JLabel label1 = null; //显示修改字段位置
public FileChooserDemo1()
{
f = new JFrame("FileChooser Example");
Container contentPane = f.getContentPane();
JPanel panel = new JPanel();
JButton b1 = new JButton("上传文件");
b1.addActionListener(this);
JButton b2 = new JButton("存储文件");
b2.addActionListener(this);
panel.add(b1);
// panel.add(b2);
label = new JLabel(" ",JLabel.CENTER);
fileChooser = new JFileChooser("D:\\");//建立一个FileChooser对象,并指定D:的目录为默认文件对话框路径.
// JFrame f = new JFrame();
mt=new MyTable();
mt.addTableModelListener(this);
table=new JTable(mt);
table.setPreferredScrollableViewportSize(new Dimension(550, 100));
JScrollPane s = new JScrollPane(table);
label1 = new JLabel("修改字段位置:");
// contentPane.add(label,BorderLayout.EAST);
contentPane.add(addInput(),BorderLayout.NORTH);
// contentPane.add(scrollPane,BorderLayout.WEST);
// contentPane.add(panel,BorderLayout.EAST);
contentPane.add(s,BorderLayout.CENTER);
contentPane.add(addOutput(),BorderLayout.SOUTH);
f.pack();
f.setTitle("ISoap");
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private Container addInput() {
JPanel xPanel = new JPanel();
xPanel.setLayout(new BoxLayout(xPanel, BoxLayout.X_AXIS));
textField = new JTextField();
JScrollPane scrollPane = new JScrollPane(textField);
scrollPane.setPreferredSize(new Dimension(350,30));
xPanel.add(textField);
JButton button = new JButton("上传路径");
button.addActionListener(this);
button.setAlignmentX(Component.CENTER_ALIGNMENT);
xPanel.add(button);
return xPanel;
}
private Container addOutput() {
JPanel xPanel = new JPanel();
xPanel.setLayout(new BoxLayout(xPanel, BoxLayout.X_AXIS));
textField = new JTextField();
JScrollPane scrollPane = new JScrollPane(textField);
scrollPane.setPreferredSize(new Dimension(350,30));
xPanel.add(textField);
JButton button = new JButton("导出路径");
button.addActionListener(this);
button.setAlignmentX(Component.CENTER_ALIGNMENT);
xPanel.add(button);
return xPanel;
}
public void tableChanged(TableModelEvent e)
{
int row = e.getFirstRow();
int column = e.getColumn();
label.setText("修改字段位置:"+(row+1)+" 行 "+(column+1)+" 列");
System.out.println("修改字段位置:"+(row+1)+" 行 "+(column+1)+" 列");
boolean cheat =((Boolean)(mt.getValueAt(row,column))).booleanValue();
System.out.println(cheat);
mt.reset((String) mt.getValueAt(row,0), cheat);
table.repaint();
}
public static void main(String[] args) {
new FileChooserDemo1();
}
public void actionPerformed(ActionEvent e)
{
File file = null;
int result;
/*当用户按下"打开文件"按钮时,JFileChooser的showOpenDialog()方法会输出文件对话框,并利用
*setApproveButtonText()方法取代按钮上"Open"文字;以setDialogTitle()方法设置打开文件对话框Title名称.
*当使用选择完后,会将选择结果存到result变量中.
*/
if (e.getActionCommand().equals("上传路径"))
{
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("打开文件");
result = fileChooser.showOpenDialog(f);
textField.setText("");
/*当用户按下打开文件对话框的"确定"钮后,我们就可以利用getSelectedFile()方法取得文件对象.若是用户按下打
*开文件对话框的"Cancel"钮,则将在label上显示"你没有选择任何文件"字样.
*/
if (result == JFileChooser.APPROVE_OPTION)
{
file = fileChooser.getSelectedFile();
label.setText("您选择打开的文件名称为:"+file.getName());
}
else if(result == JFileChooser.CANCEL_OPTION)
{
label.setText("您没有选择任何文件");
}
FileInputStream fileInStream = null;
if(file != null)
{
try{
//利用FileInputStream将文件内容放入此数据流中以便读取.
fileInStream = new FileInputStream(file);
}catch(FileNotFoundException fe){
label.setText("File Not Found");
return;
}
int readbyte;
try{
//以read()方法读取FileInputStream对象内容,当返回值为-1时代表读完此数据流.将所读到的字符显示
//在textarea中.
while( (readbyte = fileInStream.read()) != -1)
{
//textField.append(String.valueOf((char)readbyte));
}
}catch(IOException ioe){
label.setText("读取文件错误");
}
finally{//回收FileInputStream对象,避免资源的浪费.
try{
if(fileInStream != null)
fileInStream.close();
}catch(IOException ioe2){}
}
}
}
//实作写入文件的功能.
if (e.getActionCommand().equals("存储文件"))
{
result = fileChooser.showSaveDialog(f);
file = null;
String fileName;
//当用户没有选择文件,而是自己键入文件名称时,系统会自动以此文件名建立新文件.
if (result == JFileChooser.APPROVE_OPTION)
{
file = fileChooser.getSelectedFile();
label.setText("您选择存储的文件名称为:"+file.getName());
}
else if(result == JFileChooser.CANCEL_OPTION)
{
label.setText("您没有选择任何文件");
}
//写入文件我们使用FileOutputStream,在这个范例中,我们写入文件的方式是将之前内容清除并重新写入.若你想把
//新增的内容加在原有的文件内容后面,你可以使用FileOutputStream(String name,Boolean append)这个构造函数.
FileOutputStream fileOutStream = null;
if(file != null)
{
try{
fileOutStream = new FileOutputStream(file);
}catch(FileNotFoundException fe){
label.setText("File Not Found");
return;
}
String content = textField.getText();
try{
fileOutStream.write(content.getBytes());
}catch(IOException ioe){
label.setText("写入文件错误");
}
finally{
try{
if(fileOutStream != null)
fileOutStream.close();
}catch(IOException ioe2){}
}
}
}
}
}
分享到:
相关推荐
java FileChooserDemo是jdk1.6.0下DOME中一个很好的fileChoose使用案例!对于fileChoose的初学者很有帮助,附源代码!
java 文件选择器 源码 java 文件选择器 源码 java 文件选择器 源码
六首页数字藏品NFT交易网React NextJS网站模板 六首页数字藏品nft交易网反应NextJS网站模板
wireshark安装教程入门
【作品名称】:基于C++负数据库的隐私保护在线医疗诊断系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于负数据库的隐私保护在线医疗诊断系统 NDBMedicalSystem 客户端及服务器端 本项目是在保护用户隐私的前提下,完成了对新冠肺炎、乳腺癌、眼疾等多种疾病的智能诊断。
任务管理
3-10
Python3+MATLAB无线传感器网络相关仿真 基于RSSI测距的多边定位法仿真 生成五种网络拓扑结构源码.zip
matlab交互式课件模块,介绍了典型的工作流程,设置,以及涉及到用机器学习解决回归问题的考虑.zip
5635356
基于Matlab的模糊控制PID仿真以及相应的论文验证参数源码+文档+各种资料.zip
麦肯锡-年月xx集团战略设计和首次上市咨询报告.ppt
麦肯锡 把握中国资本市场的机遇.ppt
基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作
matlab华松敏编写的教科书《机器人理论与技术基础》的源代码.zip
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
ChatGPT是由OpenAI训练的一款大型语言模型,能够和你进行任何领域的对话。 国内中文版 它能够生成类似于人类写作的文本。您只需要给出提示或提出问题,它就可以生成你想要的东西。 充当 Linux 终端 我想让你充当 Linux 终端。我将输入命令,您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不是其他任何内容。不要写解释。除非我指示您这样做,否则不要键入命令。当我需要用英语告诉你一些事情时,我会把文字放在中括号内[就像这样]。我的第一个命令是 pwd 充当英语翻译和改进者 我希望你能担任英语翻译、拼写校对和修辞改进的角色。我会用任何语言和你交流,你会识别语言,将其翻译并用更为优美和精炼的英语回答我。请将我简单的词汇和句子替换成更为优美和高雅的表达方式,确保意思不变,但使其更具文学性。请仅回答更正和改进的部分,不要写解释。我的第一句话是“how are you ?”,请翻译它。 充当论文润色者(拿摘要部分举例) 请你充当一名论文编辑专家,在论文评审的角度去修改论文摘要部分,使其更加流畅,优美。下面是具体要求: 能让读者快速获得文章的要点或精髓,
matlab机器人课程和书籍中的问题.zip
麦肯锡_-_解决_问题_的_基本_方法_-_七步成诗.ppt
麦肯锡培训手册——好的开始是成功的一半()如何进行团队及团队与客户之间的交流.ppt