用Swing做的文件选择器

Swing做的文件选择器

文章分类:Java编程 关键字:  swing及事件处理
把我曾经遇到的一些问题跟大家分享下。好多问题教材上找不到答案,当时花费了好多时间,有些是网上查了好久查到的,有些是自己试了好久才明白的。

1)不管屏幕大小,始终把界面显示到屏幕固定比例的位置

2)文件选择器的使用,Java API上讲的太少了,就一个如何使文件选择器显示出来都困扰我很久,不知道大家刚接触时是否有同感。

3)事件处理怎么判断是哪个控件触发了事件。

4)选项卡的使用

5)滚动条的加入

6)鼠标左右键的区分

      (5)和(6)的问题本程序中不包含。以后补上。

      程序涉及内容包含选项卡布局,文件选择器及一些控件,还包含最简单的事件处理。抛砖引玉,希望对刚学swing及事件驱动的人有所帮助。

Java代码 
  1. import java.io.*;  
  2. import java.awt.*;  
  3. import javax.swing.*;  
  4. import java.awt.event.*;  
  5. public class YFileChooser implements ActionListener{  
  6.     JFrame frame=new JFrame("文件选择器实例");  
  7.     JTabbedPane tabPane=new JTabbedPane();//选项卡布局  
  8.     Container con=new Container();//布局1  
  9.     Container con1=new Container();//布局2  
  10.     JLabel label1=new JLabel("选择目录");  
  11.     JLabel label2=new JLabel("选择文件");  
  12.     JTextField text1=new JTextField();  
  13.     JTextField text2=new JTextField();  
  14.     JButton button1=new JButton("...");  
  15.     JButton button2=new JButton("...");  
  16.     JFileChooser jfc=new JFileChooser();//文件选择器  
  17.     YFileChooser(){  
  18.         jfc.setCurrentDirectory(new File("d:\\"));//文件选择器的初始目录定为d盘  
  19.         //下面两行是取得屏幕的高度和宽度  
  20.         double lx=Toolkit.getDefaultToolkit().getScreenSize().getWidth();  
  21.         double ly=Toolkit.getDefaultToolkit().getScreenSize().getHeight();  
  22.         frame.setLocation(new Point((int)(lx/2)-150,(int)(ly/2)-150));//设定窗口出现位置  
  23.         frame.setSize(300,150);//设定窗口大小  
  24.         frame.setContentPane(tabPane);//设置布局  
  25.        //下面设定标签等的出现位置和高宽  
  26.         label1.setBounds(10,10,70,20);  
  27.         label2.setBounds(10,30,100,20);  
  28.         text1.setBounds(80,10,120,20);  
  29.         text2.setBounds(80,30,120,20);  
  30.         button1.setBounds(210,10,50,20);  
  31.         button2.setBounds(210,30,50,20);  
  32.           
  33.         button1.addActionListener(this);//添加事件处理  
  34.         button2.addActionListener(this);//添加事件处理  
  35.         con.add(label1);  
  36.         con.add(label2);  
  37.         con.add(text1);  
  38.         con.add(text2);  
  39.         con.add(button1);  
  40.         con.add(button2);  
  41.         con.add(jfc);  
  42.         tabPane.add("目录/文件选择",con);//添加布局1  
  43.         tabPane.add("暂无内容",con1);//添加布局2  
  44.         frame.setVisible(true);//窗口可见  
  45.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使能关闭窗口,结束程序  
  46.     }                               
  47.     public void actionPerformed(ActionEvent e){//事件处理  
  48.         if(e.getSource().equals(button1)){//判断触发方法的按钮是哪个  
  49.             jfc.setFileSelectionMode(1);//设定只能选择到文件夹  
  50.             int state=jfc.showOpenDialog(null);//此句是打开文件选择器界面的触发语句  
  51.             if(state==1){  
  52.                 return;//撤销则返回  
  53.             }  
  54.             else{  
  55.                 File f=jfc.getSelectedFile();//f为选择到的目录  
  56.                 text1.setText(f.getAbsolutePath());  
  57.             }  
  58.         }  
  59.         if(e.getSource().equals(button2)){  
  60.             jfc.setFileSelectionMode(0);//设定只能选择到文件  
  61.             int state=jfc.showOpenDialog(null);//此句是打开文件选择器界面的触发语句  
  62.             if(state==1){  
  63.                 return;//撤销则返回  
  64.             }  
  65.             else{  
  66.                 File f=jfc.getSelectedFile();//f为选择到的文件  
  67.                 text2.setText(f.getAbsolutePath());  
  68.             }  
  69.         }  
  70.     }  
  71.     public static void main(String[] args) {  
  72.         new YFileChooser();  
  73.   
  74.     }  
  75.   
  76. }  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值