用JFileChooser的createDialog(Component parent) 可以得到一个JDialog,请问有什么简单方法得到其打开和取消按钮,我需要在它们上添加监听,做一定处理(用过弹出JDialog的getComponents方法获取这2个按钮,太麻烦了),谢谢!!(有满意答案100分哦)

解决方案 »

  1.   


    int result = file.showOpenDialog(null);
    返回值
    JFileChooser.APPROVE_OPTION是选了打开。
    else 按了取消。完整例子。import javax.swing.JFileChooser;public class FileChooserTest { public static void main(String[] args) { // 首先是创建JFileChooser 对象,里面带个参数,表示默认打开的目录,这里是默认打开当前文件所在的目录。
    JFileChooser file = new JFileChooser("."); /*
     * 使用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("你已取消并关闭了窗口!");
    }
    }
    }希望楼主看了上面的解释一定明白。
      

  2.   

    补充上面写null的地方,应该是这个文件选择Dialog的Parent。
      

  3.   


    button.addActionListener(new java.awt.event.ActionListener()
    {
    public void actionPerformed(java.awt.event.ActionEvent e)
    {



    JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fc.setDialogTitle("请选择所在文件夹"); int value = fc.showOpenDialog(null); if (value == JFileChooser.APPROVE_OPTION)
    {
    ... } else
    { JOptionPane.showConfirmDialog(null, "打开文件夹失败"); } }
    });
      

  4.   

         这个
          你的button是浏览按钮吧,了浏览会弹出一个JDialog,这个JDialog可以让你选择文件路径,选好文件路径,点击下面打开按钮,我想取得这个打开按钮,并在其上添加监听,不知道这样描述的清不清楚。
      

  5.   

    直接给打开按钮增加监听确实比较麻烦,是否考虑直接给整个JFileChooser增加监听,也就是:
      JFileChooser.addActionListener()
      

  6.   


    file.addActionListener(new AbstractAction() {
    public void actionPerformed(ActionEvent evt) {
    if (JFileChooser.APPROVE_SELECTION.equals(evt
    .getActionCommand())) {
    System.out.println("按了打开");
    } else if (JFileChooser.CANCEL_SELECTION.equals(evt
    .getActionCommand())) {
    System.out.println("按了取消");
    }
    }
    });
    注意上面的代码,当没有选择文件按打开时没有效果。
    1)选了文件按打开有效果。
    2)按了取消有效果。
      

  7.   


    这个需求有点强迫用户,宁可是关闭窗口后不能下一步,也不应该是强行要求选择文件。当然,如果你非要强迫用户选择文件的话,可以用自己的类继承JFileChooser,然后重写 approveSelection(),这有详细的例子:
      http://61party.iteye.com/blog/1024115
    public void approveSelection(){
      File file = getSelectedFile();
      if(!validateFileName(file.getName())) { // 检测不通过则提示警告
     JOptionPane.showMessageDialog(getParent(),"Invalidfilenameorpath.","WARNING",JOptionPane.WARNING_MESSAGE);
        return;
      }
      super.approveSelection(); // 正常关闭对话框并返回
    }