JFileChooser基本使用方法

合集下载

java文件选择器

java文件选择器

在java中有两种方式调用文件对话框(1)一种是AWT中的FileDialog类,通过FileDialog类创建一个对象,该对象即是所需要的对话框,例如,FileDialog dialog=new FileDialog(new Frame(),"选择存放位置",FileDialog.LOAD);这一行代码使用了FileDialog类的其中一个构造函数FileDialog(Dialog parent,String title, int mode)---------- 创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。

其中最难懂的就是int mode,这是文件对话框的模式选择,有两个字段,如下所示:最后再通过调用dialog.setVisible(true)方法来使对话框显示到用户面前,由于它是一个模式对话框,当应用程序调用其setVisible(true)方法来显示对话框时,它将阻塞其余应用程序,直到用户选择一个文件。

这是简单的一个对话框操作,但如果说要需要更加多的操作(例如多文件选择,可以同时选择文件和文件夹)的话,这就要使用到swing中的JFileChooser类了,(2)下面来讲通过swing当中的JFileChooser类来创建对话框JFileChooser的功能与AWT中的FileDialog基本相似,也是用于生成“打开文件”,“保存文件”的对话框,与FileDoalog不同的是,JFileChooser无须依赖于本地平台的GUI,它由100%纯java实现,在所有平台上具有完全相同的行为,并可以在所有平台上具有相同的外观风格。

JFileChooser并不是JDialog的子类(API文档中截图如上所示),所以不能使用setVisible(true)来显示该文件对话框,而是调用showXxxDialog()方法来显示文件对话框构造方法:JFileChooser(File currentDirectory,FileSystemView fsv)使用给定的当前目录和FileSystemView构造一个JFileChooser。

cs模式报表使用简介

cs模式报表使用简介

cs模式报表使用简介java应用有不少是C/S模式,在C/S模式下,同样可以调用报表的API接口运算、展现、导出、打印报表。

报表的计算、导出和在B/S模式下方法相同。

展现和打印用到了CSReport类。

CSReport是C/S模式下的报表控件类,在这个类中可以获得报表的显示面板、获得报表的打印面板、显示报表打印窗口、直接打印报表等等。

下面分别介绍这几步的实现方法运算报表private IReport CalcReport(String reportFile, String license) {ExtCellSet.setLicenseFileName(license);//设置授权ReportDefine rd = null;try {rd = (ReportDefine) ReportUtils.read(reportFile);//读取报表 } catch (Exception e) {e.printStackTrace();}Context cxt = new Context();Engine engine = new Engine(rd, cxt);IReport iReport = engine.calc();return iReport;}以上代码的功能是运算报表,和在B/S模式下运算报表差不多。

展现报表Private showReport(IReport iReport){CSReport csReport = new CSReport(iReport);try {//获取报表的显示面板,并且放置在frame窗体中getContentPane().add(csReport.getDisplayPane());} catch (Throwable e) {e.printStackTrace();}show();}展现报表效果导出报表(导出excel方法)private void SaveAsExcel() {String fileName = "";// 定义导出文件的格式FileNameExtensionFilter filter = newFileNameExtensionFilter("excel","xls");JFileChooser jFileChooser = new JFileChooser();jFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONL Y);jFileChooser.setFileFilter(filter); // 调用定义好的文件类型jFileChooser.setDialogTitle("选择保存路径");int result = jFileChooser.showSaveDialog(csReport.this);if (result == JFileChooser.APPROVE_OPTION) {//判断是否选择保存按钮fileName = jFileChooser.getSelectedFile().getAbsolutePath() + ".xls";System.out.println(fileName);try {ReportUtils.exportToExcel(fileName, iReport, true);} catch (Throwable e) {e.printStackTrace();}}}其他格式文件的导出方法和这个类似,这里就不介绍了。

文件选择对话框,颜色选择对话框,分隔线的使用与介绍 - java记事 - javaeye技

文件选择对话框,颜色选择对话框,分隔线的使用与介绍 - java记事 - javaeye技

文件选择对话框,颜色选择对话框,分隔线的使用与介绍-JAVA记事- JavaEye技...文件选择对话框,颜色选择对话框,分隔线的使用与介绍关键字: swing文件选择对话框,颜色选择对话框,分隔线的使用与介绍++ Swing程序设计++ JFileChoose,JColorChooer,JSeparator文件选择对话框,颜色选择对话框,分隔线的使用与介绍. 13-1:使用JFileChooser组件.JFileChooser的类层次结构图:ng.Objectponent--java.awt.Container--javax.swing.JComponent--javax.swing.JFileChooser当我们在处理窗口上的一些操作,特别是文本处理的部份,例如一个文本编辑器上打了一段文字,我们可能希望将此段文字存储起来,供以后方便使用,此时系统应当提供一个存储文件的对话框,将此段文字存到一个自定义或内定的文件名中.同样,当我们要叫出某个文件时,系统也应当提供打开文件的功能,让我们选择所欲打开的文件.在java中这些操作都可以由JFileChoose组件来达成.这个组件提供了打开文件存盘的窗口功能,也提供了显示特定类型文件图标的功能,亦能针对某些文件类型做过滤的操作.如果你的系统需要对某些文件或文件做操作,JFileChooser组件可以让你轻松地做出漂亮的用户界面.在这边读者要注意的是,JFileChooser 本身不提供读文件或存盘的功能,这些功能必须你自行实作.事实上,JFileChooser本身只是一个对话框模型,它也是依附在JDialog的结构上,因此它只是一个针对文件操作的对话框,当然本身也就不会有读文件或存盘的功能!以下我们来看JFileChooser的构造函数:JFileChooser构造函数:JFileChooser():建立一个JFileChooser对象,默认的文件对话框路径是用户的家目录(Home Directory),例如在windows 2000中的Administrator的家目录是在C:\Documents and Settings\Administrator中. JFileChooser(File currentDirectory):建立一个JFileChooser对象,并以File所在位置文件为文件对话框的打开路径. JFileChooser(File currentDirectory,FileSystemView fsv):建立一个JFileChooser对象,以File所在位置为文件对话框的打开路径并设置文件图标查看方式.JFileChooser(FileSystemView fsv):建立一个JFileChooser 对象,并设置文件图标查看方式.JFileChooser(String currentDirectoryPath):建立一个JFileChooser对象,并设置文件对话框的打开路径. JFileChooser(String currentDirectoryPath,FileSystemView fsv): 建立一个JFileChooser对象,并设置文件对话框的打开路径与文件图标查看方式.13-1-1:建立一个简单的JFileChooser对话框:介绍完JFileChooser构造函数后,我们来实作一个简单的范例.这个范例可以让用户在JTextArea上输入文字,输入完后按下"存储文件"按钮就可以打开JFileChooser存储文件对话框,用户可以输入欲存储的文件名,按下"Save"按钮就可以存储文件.若用户要打开某个文件内容,只需要按下"打开文件"按钮,就会出现JFileChooser打开文件对话框,用户选择好所欲打开的文件就可以将数据读入JTextArea中.在这个范例中,我们使用JFileChooser的showOpenDialog()或showSaveDialog()方法来打开文件对话框,此两个方法在用户按下按钮或关闭对话框时会返回一个整数值,这个整数值的类型有3种,分别是:JFileChooser.CANCEL_OPTION:表示用户按下取消按钮.JFileChooser.APPROVE_OPTION:表示用户按下确定按钮.JFileChooser.ERROR_OPEION:表示有错误产生或是对话框不正常关闭.利用这3个整数值我们就能判断用户到底在对话框中做了什么操作,并加以处理,例如当用户选择了文件并按下确定键后,我们就可以利用getSelectedFile()方法取得文件对象,利用这个文件对象我们就能够取得文件名称(getName())与文件路径(getPath());import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;class FileChooserDemo1 implements ActionListener{JFrame f = null;JLabel label = null;JTextArea textarea = null;JFileChooser fileChooser = null; public FileChooserDemo1(){f = new JFrame("FileChooser Example");Container contentPane = f.getContentPane();textarea = new JTextArea();JScrollPane scrollPane = newJScrollPane(textarea);scrollPane.setPreferredSize(new Dimension(350,300));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:的目录为默认文件对话框路径.contentPane.add(label,BorderLayout.NORTH);contentPane.add(scrollPane,BorderLayout.CENTER);contentPane.add(panel,BorderLayout.SOUTH);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}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);textarea.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){textarea.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 = textarea.getText();try{fileOutStream.write(content.getBytes());}catch(IOException ioe){label.setText("写入文件错误");}finally{try{if(fileOutStream != null)fileOutStream.close();}catch(IOException ioe2){}}}}}}13-1-2:建立可选择文件类型的JFileChooser对话框: 当你专为某种文件类型设计一套软件时,为了用户打开文件存盘方便,我们通常会在文件对话框中过滤掉无关的文件类型,让用户很快速选择出想要的文件数据.例如在Word软件中,当我们按下"另存新文件"选项时,所出现的文件对话框将会以".doc"扩展名当作默认的文件存储类型.如果你所设计的软件可以支持多种类型的文件操作,你应该设计让用户可以选择使用哪一种类型的文件.若你想在java的文件对话框中做到这样的功能,你必须实现FileFilter这个抽象类.此抽象类里面定义了两个空的方法,分别是accept(File f)与getDescripton().当目录里的文件与设置的文件类型相符时,accept()方法就会返回true,并将此文件显示在文件对话框中.而getDescription()方法则是对此文件类型的描述,可由程序设计者自定义,如"*.java"等等.要设置选择文件类型对话框你可以使用JFileChooser的addChoosableFileFilter()方法或是setFileFilter()方法.下面这个例子我们实现FileFilter的功能,让用户打开文件时可以选择显示所有文件,或是*.java文件,亦或是*.class文件.import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.File;//由于我们在程序中要使用到File与FileFilter对象,因此要import File与FileFilter这两个类. import javax.swing.filechooser.FileFilter;public class FileFilterDemo implements ActionListener{JFrame f=null;JLabel label=null;JFileChooser fileChooser=null;public FileFilterDemo(){f=new JFrame("FileFilterDemo");Container contentPane=f.getContentPane();JButton b=new JButton("打开文件");b.addActionListener(this);label=new JLabel(" ",JLabel.CENTER);label.setPreferredSize(new Dimension(150,30));contentPane.add(label,BorderLayout.CENTER);contentPane.add(b,BorderLayout.SOUTH);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public static void main(String[] args){new FileFilterDemo();}//处理用户按下"打开旧文件"按钮事件.public void actionPerformed(ActionEvent e){fileChooser=new JFileChooser("C:\\winnt");//以c:\\winnt为打开文件为对话框的默认路径//利用addChoosableFileFilter()方法加入欲过滤的文件类型,使用addChoosableFileFilter()可以加入多种文件类型,//若你只需要过滤出一种文件类型,可使用setFileFilter()方法.fileChooser.addChoosableFileFilter(new JAVAFileFilter("class"));fileChooser.addChoosableFileFilter(new JAVAFileFilter("java"));int result=fileChooser.showOpenDialog(f);if (result==JFileChooser.APPROVE_OPTION){File file=fileChooser.getSelectedFile();label.setText("你选择了:"+file.getName()+"文件");}else if (result==fileChooser.CANCEL_OPTION){label.setText("你没有选取文件");}}}//以JAVAFileFilter类继承FileFilter抽象类,并实现accept()与getDescription()方法.class JAVAFileFilter extends FileFilter{String ext;public JAVAFileFilter(String ext){this.ext=ext;}/*在accept()方法中,当程序所抓到的是一个目录而不是文件时,我们返回true值,表示将此目录显示出来.*/ public boolean accept(File file){if (file.isDirectory()){return true;}String fileName=file.getName();int index=stIndexOf('.');if (index>0 &&index<fileName.length()-1){//表示文件名称不为".xxx"现"xxx."之类型Stringextension=fileName.substring(index+1).toLowerCase();//若所抓到的文件扩展名等于我们所设置要显示的扩展名(即变量ext值),则返回true,表示将此文件显示出来,否则返回//true.if (extension.equals(ext))return true;}return false;}//实现getDescription()方法,返回描述文件的说明字符串!!!public String getDescription(){if (ext.equals("java"))return "JAVA Source File(*.java)";if (ext.equals("class"))return "JAVA Class File(*.class)";return "";}}13-1-3:建立具有特殊文件类型的图标的JFileChooser: 在上个范例中,读者可以发现若你选择显示所有文件时,文件类型图标不会因扩展名的不同而有所区别,这样可能造成用户混淆或是使用上的不方便.要解决这个问题,你必须再实现FileView这个抽象类,此抽象类定义了5个空的方法,如下表所示:FileView方法:String getDescription(File f):返回对这个文件的描述,如这是一张风景图片等.Icon getIcon(File f):返回文件Icon图标.String getName(File f):返回文件名.String getTypeDescription(File f):返回文件类型描述,如:"JAVA Source File"等等.Boolean isTraversable(File f):返回目录是否可浏览.当你实现好这5个方法后,就可以利用JFileChooser的setFileView()方法来设置文件类型图标.我们来看下面的范例:import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.File;import javax.swing.filechooser.*;public class FileIconFilterDemo implements ActionListener{JFrame f = null;JLabel label = null;JFileChooser fileChooser = null;public FileIconFilterDemo(){f = new JFrame("FileIconFilter Demo");Container contentPane = f.getContentPane();JButton b = new JButton("打开文件");b.addActionListener(this);label = new JLabel(" ",JLabel.CENTER);label.setPreferredSize(new Dimension(150,30));contentPane.add(label,BorderLayout.CENTER);contentPane.add(b,BorderLayout.SOUTH);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { System.exit(0);}});}public static void main(String[] args){new FileIconFilterDemo();}public void actionPerformed(ActionEvent e){fileChooser = new JFileChooser("c:\\winnt");fileChooser.addChoosableFileFilter(new JAVAFileFilter("class"));fileChooser.addChoosableFileFilter(new JAVAFileFilter("java"));fileChooser.setFileView(new FileIcon());int result = fileChooser.showOpenDialog(f);if(result == JFileChooser.APPROVE_OPTION){File file = fileChooser.getSelectedFile();label.setText("您选择了:"+file.getName()+"文件");}else if (result ==fileChooser.CANCEL_OPTION){label.setText("您没有选择任何文件");}}}class JAVAFileFilter extends FileFilter{String ext;public JAVAFileFilter(String ext){this.ext = ext;}public boolean accept(File file){if (file.isDirectory())return true;String fileName = file.getName();int index = stIndexOf('.'); if (index > 0 && index < fileName.length()-1) { String extension =fileName.substring(index+1).toLowerCase();if (extension.equals(ext))return true;}return false;}public String getDescription(){if (ext.equals("java"))return "JAVA Source File (*.java)";if (ext.equals("class"))return "JAVA Class File (*.class)";return "";}}class FileIcon extends FileView{public String getName(File f) {return null; //返回值为null的话,java look and feel功能会处理掉这个项目,并取得相关值来加以设置.//一般而言可以使用f.getName()当返回值.} public String getDescription(File f) {return null; //返回值为null的话,java look and feel功能会处理掉这个项目,并取得相关值来加以设置.//你也可以自己设置对此图片的描素,如这是一张风景图片等等.} public String getTypeDescription(File f){String extension = getExtensionName(f);if(extension.equals("java"))return "JAVA Source File";if(extension.equals("class"))return "JAVA Class File";return "";} public Icon getIcon(File f){String extension = getExtensionName(f);if(extension.equals("java"))return new ImageIcon("java.gif");if(extension.equals("class"))return new ImageIcon("class.gif");return null;} public Boolean isTraversable(File f) {return null; //返回值为null的话,java look and feel功能会处理掉这个项目,并取得相关值来加以设置.//若佻不希望某个目录被浏览,则返回值可以设为Boolean.FALSE.}public String getExtensionName(File f)//在FileIcon类中我们增加一个getExtensionName()方法,用来返回文件的扩展名{ //名称.String extension ="";String fileName = f.getName();int index = stIndexOf('.'); if (index > 0 && index < fileName.length()-1) { extension =fileName.substring(index+1).toLowerCase();}return extension;}} 13-2:建立颜色选择对话框(JColorChooer):JColorChooer的类层次结构图:ng.Objectponent--java.awt.Container--javax.swing.JComponent--javax.swing.JColorChooserColor Chooser可以让你选择所想要的颜色,并更改某个组件的颜色.例如在小画家中,你可以在画板上画上图案,并选择各式各样的颜色来加以装饰;至于颜色的选择上,你可以在小画家中找到颜色选择对话框.JColorChooser构造函数: JColorChooser():建立一个JColorChooer对象,默认颜色为白色.JColorChooser(Color initialColor):建立一个JColorChooer 对象,并设置初始颜色.JColorChooser(ColorSelectionModel modal):以ColorSelectionModel构造JColorChooser对象.13-2-1:轻松输出颜色选择对话框:最常使用JColorChooser的方式是使用JColorChooser的静态方法showDialog().也就是说在大部份的情况下,我们不会new一个JColorChooser对象,而是直接使用JColorChooser的静态方法(showDialog())来输出颜色选择对话框.利用这个方法我们亦可以得到用户所选择的颜色,若用户没有选择则返回null值.另外还有一个使用JColorChooser常用的方式,那就是使用createDialog()静态方法.使用这个静态方法后会得到一个JDialog对象,我们可以利用这个JDialog对象对颜色选择对话框做更多的设置.不过利用这个方法必须配合JColorChooser对象才行,也就是必须new出一个JColorChooser对象来.下面范例我们先介绍第一种最简单的也是最实用的JColorChooser选择颜色完毕后就能更改JLabel上的背景颜色.import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import com.incors.plaf.alloy.*;import com.incors.plaf.alloy.themes.glass.*;public class ColorChooserDemo1 extends MouseAdapter {JFrame f = null;JLabel label = null;JLabel label1 = null;JLabel label2 = null;Rectangle rec1 = null;Rectangle rec2 = null;public ColorChooserDemo1(){f = new JFrame("ColorChooser Example");Container contentPane = f.getContentPane();contentPane.addMouseListener(this);label = new JLabel(" ",JLabel.CENTER);label.setPreferredSize(new Dimension(300,20));JPanel panel = new JPanel();panel.setLayout(new GridLayout(1,2));label1 = new JLabel("左Label",JLabel.CENTER); label1.setBackground(Color.red);label1.setForeground(Color.black);label1.setOpaque(true);label1.setBounds(0, 0, 150, 150);panel.add(label1);label2 = new JLabel("右Label",JLabel.CENTER); label2.setBackground(Color.green);label2.setForeground(Color.black);label2.setOpaque(true);label2.setBounds(150, 0, 150, 150);panel.add(label2);rec1 = label1.getBounds();rec2 = label2.getBounds();contentPane.add(panel,BorderLayout.CENTER);contentPane.add(label,BorderLayout.SOUTH);f.setSize(new Dimension(300,150));f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] arg){SwingUtil.setLookAndFeel();new ColorChooserDemo1();}//实现MouseAdapter中的mousePressed()与mouseClicked()方法.当按下鼠标时,就能知道鼠标光标目前的位置.当连续键击鼠标//两次时,若光标所在位置在label中,就会出现颜色选择对话框,用户可选择任一颜色更改label的颜色.public void mousePressed(MouseEvent e) {label.setText("目前鼠标坐标(X,Y)为:("+e.getX()+","+e.getY()+")");}public void mouseClicked(MouseEvent e){Point point = e.getPoint();if (e.getClickCount() ==2){if(rec1.contains(point)){ /*利用JColorChooser的showDialog()静态方法输出颜色选择对话框,showDialog()中的3个参数依次是:*对话框的父组件,颜色选择对话框标题,与对话框默认颜色.当用户选择完颜色之后,按下"OK"按钮则返回*Color对象,若按下"Cancel"按钮则返回null值.*/Color color =JColorChooser.showDialog(f,"Change label1 Color",Color.white);if (color != null) //若为null值表示用户按下Cancel按钮label1.setBackground(color);}if(rec2.contains(point)){Color color =JColorChooser.showDialog(f,"Change label2 Color",Color.yellow);if (color != null) //若为null值表示用户按下Cancel按钮label2.setBackground(color);}}}}class SwingUtil{public static final void setLookAndFeel() {try{Font font = new Font("JFrame", Font.PLAIN, 12);Enumeration keys =UIManager.getLookAndFeelDefaults().keys();while (keys.hasMoreElements()) {Object key = keys.nextElement();if (UIManager.get(key) instanceof Font) {UIManager.put(key, font);}}AlloyLookAndFeel.setProperty("alloy.isLookAndFeelFram eDecoration", "true");AlloyTheme theme = new GlassTheme();LookAndFeel alloyLnF = new AlloyLookAndFeel(theme);UIManager.setLookAndFeel(alloyLnF);}catch(UnsupportedLookAndFeelException ex){ex.printStackTrace();}}} 13-2-2:建立JColorChooser对象输出颜色选择对话框: 接下来我们介绍刚刚所提到使用JColorChooser的第二种方式,也就是使用createDialog()静态方法来输出颜色选择对话框.使用这种方式的好处是颜色选择对话框可以做出多样性的变化,例如你可以使用JDialog中的setMenuBar()方法在颜色选择对话框中加入菜单栏,或是利用JDialog的getContentPane()方法取得JDialog的ContentPane,然后对此ContentPane来做处理.下面范例我们修改上个范例程序,并利用createDialog()方式来输出JColorChooser:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ColorChooserDemo2 extends MouseAdapter implements ActionListener{JFrame f = null;JLabel label = null;JLabel label1 = null;JLabel label2 = null;Rectangle rec1 = null;Rectangle rec2 = null;JDialog dialog = null;JColorChooser colorChooser = null;public ColorChooserDemo2(){f = new JFrame("ColorChooser Example");Container contentPane = f.getContentPane();contentPane.addMouseListener(this);label = new JLabel(" ",JLabel.CENTER);label.setPreferredSize(new Dimension(300,20));JPanel panel = new JPanel();panel.setLayout(new GridLayout(1,2));label1 = new JLabel("左Label",JLabel.CENTER);label1.setBackground(Color.red);label1.setForeground(Color.black);label1.setOpaque(true);label1.setBounds(0, 0, 150, 150);panel.add(label1);label2 = new JLabel("右Label",JLabel.CENTER);label2.setBackground(Color.green);label2.setForeground(Color.black);label2.setOpaque(true);label2.setBounds(150, 0, 150, 150);panel.add(label2);rec1 = label1.getBounds();rec2 = label2.getBounds();contentPane.add(panel,BorderLayout.CENTER);contentPane.add(label,BorderLayout.SOUTH);//建立一个新的JColorChooser对象,默认颜色为白色.colorChooser = new JColorChooser();/*利用JColorChooser的createDialog()静态方法取得JDialog对象,createDialog()方法的最后两个参数是用来处理颜色*选择对话框的"OK"与"Cancel"键的ActionEvent事件.读者可发现,这边并没有对颜色选择对话框的"Reset"做处理,因为*内部系统会自动处理此事件,如此可减轻程序设计师的负担.*/dialog = colorChooser.createDialog(f, //parent component"Change Color",//titletrue, //modalcolorChooser,//JColorChooserthis,//okListenr this);//cancelListenerf.setSize(new Dimension(300,150));f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] arg){new ColorChooserDemo2();}public void mousePressed(MouseEvent e) {label.setText("目前鼠标坐标(X,Y)为:("+e.getX()+","+e.getY()+")");}boolean flag = true;public void mouseClicked(MouseEvent e){Point point = e.getPoint();//判断Double Click鼠标时的所在位置,若在label1或label2上则设置对话框的Title,并用show()方法将此对话框显示出来.if (e.getClickCount() ==2){if(rec1.contains(point)){flag = true;dialog.setTitle("Change label1 Color");dialog.show();}if(rec2.contains(point)){flag = false;dialog.setTitle("Change label2 Color");dialog.show();}}}/*处理用户对颜色选择对话框中的按钮事件.当用户按下"OK"键时,便将label的背景颜色改变成用户所选择的颜色.当用户*按下"Cancel"键时,则会用Dialog类所提供的dispose()方法就可以关闭颜色选择对话框了.*/public void actionPerformed(ActionEvent ae){if(ae.getActionCommand().equals("OK")){if (flag == true)label1.setBackground(colorChooser.getColor());elselabel2.setBackground(colorChooser.getColor());}if(ae.getActionCommand().equals("Cancel"))dialog.dispose();}}13-2-3:将JColorChooser置于一般容器中显示.我们刚刚所讲的JColorChooser都是以对话框的形式出现.事实上JColorChooser可以置于一般的java容器上,不过这时候你就必须实际构造出JColorChooser对象,并使用ColorSelectionModel来管理用户所选择的颜色.ColorSelectionModel本身是个interface.里面定义一些用户选择颜色或设置颜色的方法,并有addChangeListener()方法来检测用户是否改变了颜色的选择.要使用到ColorSelectionModel Interface所定义的方法,理论上我们必须实现它,然而java本身可利用JColorChooser所提供的getSelectionModel()方法得到ColorSelectionModel的实体.这时候就可以直接以ColorSelectionModel的addChangeListener()方法来检测用户是否对颜色的选择有所改变,而不需要再另外实现这些方法.每当用户JColorChooser上做一次颜色的改变时,就会触发ChangeEvent事件,因此我们必须实现ChangeListener 界面来处理这个事件.此界面只定义了一个方法,那就是stateChanged().下面范例我们将JColorChooser放在JPanel上,并在label上输出用户所选择的颜色与颜色参数.import java.awt.*;import java.awt.event.*;//ChangeEvent是Swing的事件,因此我们必须将Swing的event package import进来. import javax.swing.*;import javax.swing.colorchooser.*;import javax.swing.event.*;public class ColorChooserDemo3 implements ChangeListener{JFrame f = null;JLabel label = null;JColorChooser colorChooser = null;public ColorChooserDemo3(){f = new JFrame("ColorChooser Example");Container contentPane = f.getContentPane();label = new JLabel(" ",JLabel.CENTER);//设定label背景颜色为不透明,这样才可以将label 的背景颜色显示出来label.setOpaque(true);//设定label上字体的颜色,也就是label的前景颜色label.setForeground(Color.black);JPanel panel = new JPanel();/*建立一个JColorChooser对象,并以getSelectionModel()方法取得ColorSelectionModel实体,并在这个实体上以*addChangeListener()方法检测用户是否有改变颜色.*/colorChooser = new JColorChooser();/****add code***///此处为下面"13-2-4中所要加代码的区块"/****add code***/panel.add(colorChooser);ColorSelectionModel selectModel =colorChooser.getSelectionModel();selectModel.addChangeListener(this);contentPane.add(label,BorderLayout.NORTH);contentPane.add(panel,BorderLayout.CENTER);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] arg){new ColorChooserDemo3();}//实现ChangeListener Interface,stateChanged()方法是在处理ChangeEvent事件.当用户改变颜色的选择时,我们就在label//输出用户所选择的颜色,并显示颜色参数.public void stateChanged(ChangeEvent e){Color color = colorChooser.getColor();label.setBackground(color);label.setText("您选择的颜色参数为:R:"+color.getRed()+" G:"+color.getGreen()+" B:"+color.getBlue());}}13-2-4:改变JColorChooser的颜色选择面版.在以前我们曾经提到JColorChooser提供3种面版让我们选择,分别"Swatches","HSB"与"RGB".这3个面版是java 已经构造好的颜色面版,如果佻要自行产生自己所设计的颜色面版,你可以继承AbstractColorChooserPanel这个抽象类,并实现里面的抽象方法,这个抽象类位于javax.swing.colorchooser这个package中.当你实现完成之后,你可以使用JColorChooser类提供的addChooserPanel()方法,或是setChooserPanels()方法,将你所设计的颜色面版增加到上图的颜色显示面版中.若你想删除某一个颜色面版模式,你可以先使用JColorChooser类所提供的getChooserPanels()方法,得到类型为AbstractColorChooserPanel的Array Object.例如在上例中运行所示,"Swatches"就会放在此类型的Array[0]中,面"HSB"会放在Array[1]中,以此类推.得到此Array Object之后,我们就可以利用JColorChooser类提供的removeChooserPanel()方法.决定删除一个颜色面版.例如我们若要删除上例运行所示的"HSB"面版,我们可以在上面范例/****add code***/里面增加这2行程序:AbstractColorChooserPanel[]colorPanel=colorChooser.getChooserPanels();colorChooser.removeChooserPanel(colorPanel[1]);13-3:建立分隔线(JSeparator):JSeparator)的类层次结构图:ng.Objectponent--java.awt.Container--javax.swing.JComponent--javax.swing.JSeparatorJSeparator通常用在菜单(Menu)或工具栏(ToolBar)上,可以明显地分格出不同的功能区域.在JMenu或JPopupMenu中我们可以使用addSeparator()方法轻易的加入分隔线,但若是在一般的面版中呢?这时候我们必须自行建立JSeparator对象,然后再依照自己所需将分隔线放在所想要的位置上.JSeparator有水平与垂直两种,建立的方式非常简单,我们来看看JSeparator的构造函数: JSeparator构造函数:JSeparator():建立水平的JSeparator组件.JSeparator(int orientation):建立水平或垂直的JSeparator组件.JSeparator类所提供的方法跟其他Swing组件比较起来算是少了许多,因为分隔线本身并没有什么功能可言,主要是设置分隔线的方向,其他如分隔线的长短或设置位置方法,都可以在它的父类JComponent中找到.下面我们来看如何使用JSeparator,并显示水平与垂直分隔线的外观.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class SeparatorDemo1{JFrame f = null;public SeparatorDemo1(){f = new JFrame("Separator Example");Container contentPane = f.getContentPane();contentPane.setLayout(new BorderLayout(1,2));JPanel panel1 = new JPanel(newGridLayout(2,1));JLabel label = new JLabel("水平分隔线",JLabel.CENTER);JSeparator seph = new JSeparator();panel1.add(label);panel1.add(seph);JTextArea textarea = new JTextArea();textarea.setPreferredSize(newDimension(150,100));JPanel panel2 = new JPanel(new BorderLayout());panel2.add(panel1,BorderLayout.NORTH);panel2.add(textarea,BorderLayout.CENTER);JPanel panel3 = new JPanel(new GridLayout(1,3));label = new JLabel("垂直");label.setVerticalAlignment(JLabel.CENTER);panel3.add(label);JSeparator sepv = new JSeparator();sepv.setOrientation(JSeparator.VERTICAL);panel3.add(sepv);contentPane.add(panel2,BorderLayout.CENTER);contentPane.add(panel3,BorderLayout.EAST);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] arg){new SeparatorDemo1();}} Made by e-Stack Room来自:/ShowPost.Asp?ID=1107。

javafile和javafileobject用法

javafile和javafileobject用法

javafile和javafileobject用法Java是一种广泛使用的编程语言,它提供了许多有用的类和方法来帮助程序员开发高效的应用程序。

在Java中,javafile和javafileobject 是两个非常重要的类,它们可以帮助程序员处理文件和文件夹。

JavaFile类是Java中处理文件和文件夹的主要类之一。

它提供了许多有用的方法来创建、删除、重命名和移动文件和文件夹。

JavaFile类还可以用来检查文件和文件夹的属性,例如文件大小、文件类型和文件最后修改时间等。

JavaFile类的使用非常简单。

首先,我们需要创建一个JavaFile对象,该对象表示要处理的文件或文件夹。

然后,我们可以使用JavaFile类的方法来执行各种操作。

例如,要创建一个新文件,我们可以使用JavaFile类的createNewFile()方法。

要删除一个文件,我们可以使用JavaFile类的delete()方法。

JavaFileObject类是Java中处理文件对象的另一个重要类。

它提供了一种方便的方式来处理Java源代码文件和类文件。

JavaFileObject类可以用来读取和写入Java源代码文件和类文件,以及检查它们的属性,例如文件名、文件类型和文件最后修改时间等。

JavaFileObject类的使用也非常简单。

我们只需要创建一个JavaFileObject对象,该对象表示要处理的Java源代码文件或类文件。

然后,我们可以使用JavaFileObject类的方法来执行各种操作。

例如,要读取一个Java源代码文件,我们可以使用JavaFileObject类的openReader()方法。

要写入一个Java类文件,我们可以使用JavaFileObject类的openWriter()方法。

总之,JavaFile和JavaFileObject是Java中非常重要的类,它们可以帮助程序员处理文件和文件夹,以及Java源代码文件和类文件。

jscope使用方法

jscope使用方法

jscope使用方法Jscope是一款开源免费的科学数据可视化软件,广泛应用于各个领域的科学研究。

以下为您介绍Jscope使用方法。

一、安装Jscope软件1.前往Jscope官网下载安装包,支持各种操作系统。

2.安装完成后,双击Jscope图标启动软件,进入主界面。

二、导入数据文件1.在主界面左上角点击“File”菜单,选择“Open file”选项,弹出文件选择对话框。

2.选择需要导入的数据文件,Jscope支持多种格式,如FITS、ASCII、NetCDF等。

3.根据数据文件类型选择相应的数据解析器,在对话框界面中设置各个参数,确认后导入数据文件。

三、绘制数据图表1.使用鼠标在主界面左侧的“Data Browser”中选中需要绘制的数据。

2.在右侧的“Drawing”选项卡中选择绘图类型,如XY、3D等。

3.根据需要选择绘图参数,如x、y坐标轴、线型、颜色等。

四、高级功能1.多重曲线绘制:在“Data Browser”中选中多组数据,然后在“Drawing”选项卡中设置绘图参数。

2.自定义符号:在“Drawing”选项卡中选择自定义符号,上传指定的符号图片。

3.数据分析:在“Data Browser”中选中需要进行分析的数据,然后在右侧的“Math”选项卡中选择统计函数、滤波器等进行数据分析。

4.保存图表:选择“File”菜单中的“Save image”选项,在弹出的对话框中选择保存格式和路径即可。

总的来说,Jscope是一款功能强大、易于使用的数据可视化软件。

如果您需要更详细的使用方法,可以查看官方网站的技术手册。

jimageupload的用法

jimageupload的用法

jimageupload的用法摘要:一、概述jimageupload的作用二、jimageupload的用法介绍1.安装与配置2.上传图片方法3.图片管理功能4.高级设置与应用场景三、实战案例分享四、总结与建议正文:【概述jimageupload的作用】jimageupload是一款便捷的图片上传与管理工具,适用于各种网站、博客和在线平台。

它具有轻量级、易用性强、功能全面等特点,可以帮助用户快速地上传和管理图片。

本文将详细介绍jimageupload的用法,带你轻松掌握这款优秀的开源项目。

【jimageupload的用法介绍】1.安装与配置在使用jimageupload之前,首先需要在你的项目中引入它。

你可以通过以下方式进行安装:```composer require jimageupload/jimageupload```安装完成后,按照官方文档进行配置。

配置过程中,你需要设置上传目录、图片处理工具、允许上传的文件类型等参数。

2.上传图片方法在配置完成后,你可以通过以下代码实现图片上传功能:```phpuse JimageuploadJimageupload;// 实例化Jimageupload类$jimageupload = new Jimageupload();// 设置上传参数$params = ["upload_dir" => "./uploads/", // 上传目录"allowed_types" => "jpg,png,gif", // 允许上传的文件类型"max_filesize" => 1000000, // 最大文件大小,单位:字节];// 初始化上传$jimageupload->init($params);// 开始上传图片if ($jimageupload->upload()) {echo "图片上传成功!";} else {echo "图片上传失败!";}```3.图片管理功能jimageupload内置了图片管理功能,你可以通过以下方法对已上传的图片进行操作:```php// 获取已上传图片列表$images = $jimageupload->get_uploads();// 删除图片$jimageupload->delete_image("image_name.jpg");// 调整图片大小$jimageupload->resize_image("image_name.jpg", 100, 100);// 生成缩略图$jimageupload->create_thumbs("image_name.jpg", 100, 100);```4.高级设置与应用场景jimageupload还提供了许多高级设置,如水印、裁剪、图片滤镜等。

javaswing jlist组件的基本用法 -回复

javaswing jlist组件的基本用法-回复[Javaswing JList组件的基本用法]Javaswing是一个用于构建图形用户界面(GUI)的Java库。

JList是Swing 库中的一个重要组件,用于将数据以列表的形式展示给用户。

在本文中,我们将探讨JList组件的基本用法,并一步一步回答中括号内的问题。

首先,我们来了解一下JList的基本概念和功能。

JList是一个显示列表的组件,它可以将任意类型的数据按照一定的格式呈现给用户。

用户可以通过鼠标或键盘与JList进行交互,选取或操作列表中的项。

JList可以垂直或水平显示,并支持滚动。

1. 什么是JList?JList是Swing库中的一个组件,用于显示列表数据给用户。

2. 如何创建一个JList组件?要创建一个JList组件,我们可以使用JList类的构造函数,传入一个数组或Vector对象作为数据模型。

例如:javaString[] data = {"Item 1", "Item 2", "Item 3"};JList<String> list = new JList<>(data);这将创建一个包含三个选项的JList组件。

3. 如何将JList组件添加到GUI中?要将JList组件添加到GUI中,我们可以使用容器类(如JFrame、JPanel)的add()方法。

例如:javaJFrame frame = new JFrame();frame.add(list);这将在JFrame窗口中添加一个JList组件。

4. 如何自定义JList的外观和行为?我们可以使用JList类的各种方法来自定义JList的外观和行为。

例如,我们可以使用setSelectionMode()方法来设置选择模式,如单选(ListSelectionModel.SINGLE_SELECTION)或多选(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION):javalist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);还可以使用setFont()方法设置字体,使用setBackground()方法设置背景色等等。

加吧记事本的文件选择与颜色选择器代码

加吧记事本的文件选择与颜色选择器代码在我们日常的开发中,经常会用到文件选择器和颜色选择器的功能。

它们可以大大提高我们的开发效率和用户体验。

而在使用它们的过程中,我们也会遇到一些问题。

下面让我们来看一下如何使用文件选择器和颜色选择器,并解决一些可能出现的问题。

文件选择器的使用文件选择器可以让我们通过界面方式选择文件。

它可以提供多种选择方式,包括打开本地文件、选择图片等等。

现在我们来看一下如何在我们的应用中使用文件选择器。

代码实现:```// 先获取文件选择器JFileChooser fileChooser = new JFileChooser();// 设置起始路径fileChooser.setCurrentDirectory(new File("./"));// 设置文件选择器模式(打开文件)fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);// 打开文件选择器int ret = fileChooser.showOpenDialog(null);// 用户选择了文件并点击了确定按钮if (ret == JFileChooser.APPROVE_OPTION) {// 获取用户选择的文件File file = fileChooser.getSelectedFile();// 将文件读入到程序中// 。

}```解释:1. 先用 `JFileChooser` 类定义一个文件选择器对象。

2. 设置文件选择器的初始路径,我们可以设置为当前项目路径。

3. 设置文件选择器的模式为打开文件。

4. 打开文件选择器,并等待用户选择文件。

5. 当用户点击了“确定”按钮,程序就可以获取用户选择的文件。

6. 我们可以将用户选择的文件读入到程序中进行处理。

注意事项:当文件类型不符时,文件选择器会自动提示用户。

但是,由于操作系统限制,如果我们的程序没有文件或网络权限,选择器可能会选择失败。

javascript里openfile用法

javascript里openfile用法JavaScript是一种广泛应用于网页开发的脚本语言,它具有强大的功能和灵活的语法。

在JavaScript中,openfile是一个常用的方法,用于打开文件并读取文件内容。

本文将介绍JavaScript中openfile的用法。

在JavaScript中,要使用openfile方法,首先需要创建一个File对象。

File对象代表计算机文件系统中的文件,它可以用来读取、写入和操作文件。

创建File对象的方法有多种,可以通过用户选择文件上传,也可以通过指定文件路径来创建。

一般情况下,我们使用input标签的type属性为file的表单元素来实现文件上传功能。

当用户选择文件后,可以通过JavaScript获取到该文件的信息,并创建对应的File对象。

例如:```javascript<input type="file" id="fileInput" onchange="handleFile(this.files[0])"><script>function handleFile(file) {var reader = new FileReader();reader.onload = function(e) {var fileContent = e.target.result;console.log(fileContent);};reader.readAsText(file);}</script>```上述代码中,通过input标签的onchange事件监听用户选择文件的操作。

当用户选择文件后,会调用handleFile函数,并将选择的文件作为参数传入。

在handleFile函数中,我们创建了一个FileReader对象,用于读取文件内容。

通过FileReader对象的readAsText方法,可以将文件内容读取为文本格式。

javaswing中使用JFileChooser读取Excel并进行解析

javaswing中使⽤JFileChooser读取Excel并进⾏解析java swing 中使⽤JFileChooser读取Excel并进⾏解析2011-11-20 10:42424⼈阅1. package com.robert.Excel;2.3. import javax.swing.*;4.5. public class ExcelFrame extends JFrame {6.7. private static final int DEFAULT_WIDTH = 500;8. private static final int DEFAULT_HEIGHT = 400;9. private static final int DEFAUTL_POSITION_X = 200;10. private static final int DEFAULT_POSITION_Y = 200;11.12. public ExcelFrame() {13. setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);14. setLocation(DEFAUTL_POSITION_X, DEFAULT_POSITION_Y);15. setTitle("解析Excel");16. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);17. }18.19. public String readFile() {20. String fileName = "";21. JFileChooser chooser = new JFileChooser();22. int returnVal = chooser.showOpenDialog(this);23. if(returnVal == JFileChooser.APPROVE_OPTION) {24. fileName = chooser.getSelectedFile().getName();25. }26. return fileName;27. }28. }[html]view plaincopyprint?1. package com.robert.Excel;2.3. import ermodel.XSSFCell;4. import ermodel.XSSFRow;5. import ermodel.XSSFSheet;6. import ermodel.XSSFWorkbook;7.8. import java.io.*;9. import java.util.ArrayList;10.11.12. public class ExcelUtils {13. public static final String PATH = "E:\\write.sql";14. private ExcelFrame excelFrame = new ExcelFrame() ;15. private static final String INSERT_PREFIX = "insert into table values(";16.17. public static void main(String[] args) {18.21. }22.23. public void resolvingExcelToSQLScript()24. {25. String fileName = excelFrame.readFile();26. XSSFSheet sheet = readExcel("E:\\"+fileName);27. ArrayList<ArrayList> table = resolvingExcelSheet(sheet);28. String sql = mergerStr(table, INSERT_PREFIX);29. write(sql,PATH);30. }31.32. public XSSFSheet readExcel(String fileName) {33. XSSFWorkbook workbook = null;34. XSSFSheet sheet = null;35. try {36. workbook = new XSSFWorkbook(new FileInputStream(fileName));37. sheet = workbook.getSheetAt(0);38. } catch (IOException e) {39. e.printStackTrace();40. }41. return sheet;42. }43.44.45. public ArrayList<ArrayList> resolvingExcelSheet(XSSFSheet sheet) {46. int numberOfRows = sheet.getPhysicalNumberOfRows();47. XSSFRow row = null;48. ArrayList<ArrayList> values = new ArrayList<ArrayList>();49. ArrayList<String> rowValue = new ArrayList<String>();50. if (sheet != null) {51. for (int i = 0; i < numberOfRows; i++) {52. row = sheet.getRow(i);53.54. rowValue = resolvingExcelRow(row);55. values.add(rowValue);56. }57. }58. return values;59. }60. public ArrayList<String> resolvingExcelRow(XSSFRow row) {61. int numberOfColumns = row.getPhysicalNumberOfCells();62. XSSFCell cell = null;63. String cellValue = "";64. ArrayList<String> cellValues = new ArrayList<String>();65. if (row !=null)66. {67. for (int i = 0; i < numberOfColumns; i++) {68. cell = row.getCell(i);69. if(cell!=null)70. {71. if((cell.getCellType())==XSSFCell.CELL_TYPE_NUMERIC)72. {73. cellValue = cell.getNumericCellValue()+"";74. }75. else if(cell.getCellType()==XSSFCell.CELL_TYPE_STRING)77. cellValue = cell.getStringCellValue();78. cellValue = "\'"+cellValue+"\'";79. }80. cellValues.add(cellValue);81. }82. }83. }84. return cellValues;85. }86.87. public String mergerStr(ArrayList<ArrayList> table,String insertStr)88. {89. String scriptSQL = "";90. for(ArrayList arrayList : table)91. {92. String insertSQL = insertStr;93. ArrayList<String> list = (ArrayList<String>)arrayList;94. for(int i=0;i<list.size()-1;i++)95. {96. insertSQL += list.get(i);97. insertSQL += ", ";98. }99. insertSQL += list.get(list.size()-1);100. insertSQL += ");";101. insertSQL += "\n";102. scriptSQL += insertSQL;103. }104.105. return scriptSQL;106. }107.108. public void write(String sql,String path) {109. PrintWriter printWriter = null;110. BufferedWriter bufferedWriter = null;111. try {112. printWriter = new PrintWriter(path);113. bufferedWriter = new BufferedWriter(printWriter);114. bufferedWriter.write(sql);115. bufferedWriter.flush();116.117. bufferedWriter.close();118. printWriter.close();119. } catch (FileNotFoundException e) {120. e.printStackTrace();121. } catch (IOException e) {122. e.printStackTrace();123. } finally {124. try125. {126. bufferedWriter.close();127. printWriter.close();128. }129. catch (IOException e)130. {131. e.printStackTrace();133. } 134. } 135. 136. }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

标准文案 大全 分类: Java学习笔记 JFileChooser() 构造一个指向用户默认目录的 JFileChooser。

JFileChooser(File currentDirectory) 使用给定的 File 作为路径来构造一个 JFileChooser。

setFileSelectionMode(int mode) 设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录。 mode参数:FILES_AND_DIRECTORIES 指示显示文件和目录。 FILES_ONLY 指示仅显示文件。 DIRECTORIES_ONLY 指示仅显示目录。 showDialog(Component parent,String approveButtonText) 弹出具有自定义 approve 按钮的自定义文件选择器对话框。 showOpenDialog(Component parent) 弹出一个 "Open File" 文件选择器对话框。 showSaveDialog(Component parent) 弹出一个 "Save File" 文件选择器对话框。 setMultiSelectionEnabled(boolean b) 设置文件选择器,以允许选择多个文件。 getSelectedFiles()

如果将文件选择器设置为允许选择多个文件,则返回选中文件的列表(File[])。 getSelectedFile() 返回选中的文件。

package .liang; import java.awt.event.ActionEvent; 标准文案 大全 import java.awt.event.ActionListener; import java.io.File;

import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel;

public class FileChooser extends JFrame implements ActionListener{ JButton open=null; public static void main(String[] args) { new FileChooser(); } public FileChooser(){ open=new JButton("open"); this.add(open); this.setBounds(400, 200, 100, 100); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); open.addActionListener(this); } Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JFileChooser jfc=new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES ); 标准文案 大全 jfc.showDialog(new JLabel(), "选择"); File file=jfc.getSelectedFile(); if(file.isDirectory()){ System.out.println("文件夹:"+file.getAbsolutePath()); }else if(file.isFile()){ System.out.println("文件:"+file.getAbsolutePath()); } System.out.println(jfc.getSelectedFile().getName());

} } JFileChooser 效果图如下: 标准文案

大全 其实JFileChooser基本使用方法还是很简单的,下面写两个示例看了就明白了,如果还要增加一些功能,我们还可以添加过滤器,只显示过滤后的文件。还可以再保存的时候,如果保存的是目录里已经存在的文件,那么对话框不会关闭,并且弹出一个JOptionPane提示用户是否保存文件。 打开文件对话框: import java.io.File; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; public class FileChooserTest { public static void main(String [] args) { //首先是创建JFileChooser 对象,里面带个参数,表示默认打开的目录,这里是默认打开当前文件所在的目录。 JFileChooser file = new JFileChooser ("."); //下面这句是去掉显示所有文件这个过滤器。 file.setAcceptAllFileFilterUsed(false); //添加excel文件的过滤器 file.addChoosableFileFilter(new ExcelFileFilter("xls")); //添加exe文件的过滤器 file.addChoosableFileFilter(new ExcelFileFilter("exe")); /*使用showOpenDialog()方法,显示出打开选择文件的窗口,当选择了某个文件后,或者关闭此窗口那么都会返回一个 整型数值,如果返回的是0,代表已经选择了某个文件。如果返回1代表选择了取消按钮或者直接关闭了窗口*/ int result = file.showOpenDialog(null); /*JFileChooser.APPROVE_OPTION是个整型常量,代表0。就是说当返回0的值我们才执行相关操作,否则什么也不做。 标准文案 大全 if(result == JFileChooser.APPROVE_OPTION) { /*获得你选择的文件绝对路径。并输出。当然,我们获得这个路径后还可以做很多的事。 String path = file.getSelectedFile().getAbsolutePath(); System.out.println(path); } else { System.out.println("你已取消并关闭了窗口!"); } } /*因为我们需要创建一个文件的过滤器,以便让文件对话框显示我们指定的文件。这里我们就以Excel文件和exe文件举例。 那么要做到这点我们就需要重写FileFilter 类的accept来设置相关的过滤器。这个继承类你可以写成外部类、部类甚至是 匿名部类。我这里写成了一个部类的形式。因为是在main方法使用他,因此这个类也要定义成 静态的。 private static class ExcelFileFilter extends FileFilter { String ext; //构造方法的参数是我们需要过滤的文件类型。比如excel文件就是 xls,exe文件是exe. ExcelFileFilter(String ext) { this.ext = ext; } /*这个方法就是重写 FileFilter 类的方法,参数是File对象,一般这个参数是如何传入的我们可以不用关心。他返回一个布尔型。如果为真表示该文件符合过滤设置,那么就会显示在当前目录下,如果为假就会被过滤掉。 public boolean accept(File file) { //首先判断该目录下的某个文件是否是目录,如果是目录则返回true,即可以显示在目录下。 if (file.isDirectory()) { return true; } //获得某个文件的文件名,然后使用lastIndexOf()来获得这个文件名字符串中'.'这个字符最后一次出现的位置。并且通过它返回的一个整型来判断该文件是否符合*.*这中文件+文件名的格式,如果不符合那么就不显示这个文件。如果符合,那么就将'.'字符后面的字符串提取出标准文案 大全 来与过滤的文件名相比较,如果相等则符合该文件格式,并显示出来。如果不相等那么就将其过滤掉。*/ String fileName = file.getName(); int index = fileName.lastIndexOf('.'); if (index > 0 && index < fileName.length() - 1) { String extension = fileName.substring(index + 1).toLowerCase(); if (extension.equals(ext)) return true; } return false; } /*这个方法也是重写FileFilter的方法,作用是在过滤名那里显示出相关的信息。这个与我们过滤的文件类型想匹配,通过这些信息,可以让用户更清晰的明白需要过滤什么类型的文件。*/ public String getDescription() { if (ext.equals("xls")) { return "Microsoft Excel文件(*.xls)"; } if(ext.equals("exe")) { return "可执行文件(*.exe)"; } return ""; } } } 打开选择文件的对话框就建立好了。但是上面的程序还有瑕疵。因为只有当用户点取消或关闭该窗口时才不会执行任何操作。而如果用户在对话框里输入的文件在当前目录中不存在时,那么窗口依然会关闭,这时可能就需要在程序中再来做判断。那么可不可以在当用户输入错误的文件名后,窗口不会关闭,而是不执行任何操作或者弹出个对话框提示用户,可以看看大多数window程序中的选择对话框都是这么做的,其实要实现这个功能也不难,只需要再重写一下JFileChooser类的approveSelection()方法就行了。

相关文档
最新文档