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){}
}
}
}
}
}
分享到:
相关推荐
在`FileChooserDemo`这个示例中,它展示了如何在Java应用程序中集成文件选择功能,以便用户可以方便地打开、保存或者浏览文件。这个示例对于初学者来说,是一个很好的学习资源,因为它详细演示了`FileChooser`的使用...
java 文件选择器 源码 java 文件选择器 源码 java 文件选择器 源码
1. 创建了一个`JTextArea` (`log`) 来显示对话框的操作结果。 2. `JFileChooser`实例 (`fc`) 初始化为当前目录("."),然后添加了`MyFilter`作为可选文件过滤器,这样在打开或保存文件时,用户只能看到`.java`文件...
1. **SwingSet2.html**:这是一个HTML文档,可能包含了关于SwingSet2的介绍、使用指南或链接到其他相关文档。通过阅读这个文件,我们可以快速获取SwingSet2的基本信息和如何运行这个示例程序。 2. **SwingSet2.java...
int returnVal = fc.showOpenDialog(FileChooserDemo.this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); // 处理用户选择的文件 } } } ``` 当用户点击“打开”...
1. **初始化**:创建一个`JFileChooser`实例是使用它的无参构造函数开始的。这将返回一个默认配置的文件选择器,可以进一步定制以满足特定需求。 2. **设置当前目录**:通过调用`setCurrentDirectory()`方法,你...
1. **FileChooserDemo.java**:这是一个用户界面类,通常包含用于让用户选择输入和输出文件的控件。在Java中,可以使用JFileChooser API来实现文件的选择功能,允许用户选择需要进行哈夫曼压缩或解压缩的文件。 2. ...
- **FileChooserDemo**:展示了如何使用 JFileChooser 类来实现文件选择功能。 - **Font2DTest**:一个字体测试程序,允许用户尝试系统已安装的不同字体。 - **Java2D**:一个全面展示 Java 2D 图形功能的...