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 文件选择器 源码
pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
matlab建立计算力学课程的笔记和文件.zip
FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
matlab基于RRT和人工势场法混合算法的路径规划.zip
matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip
office 2016三和一精简版
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
麦肯锡咨询顾问必备宝典-时间管理.ppt
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
麦肯锡顾问的黄金思考方法.pptx
91fdd461elb59a4ce8dfcfc46bc283a7.msi
ansys maxwell
5-5
xx广告促销计划流程实施手册.ppt
仿小米商城微信小程序源码+项目说明.zip
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
麦肯锡xx客户满意服务.ppt