JFIleChooser - 在FileChooser打开时监听更改

时间:2016-06-03 23:25:07

标签: java swing listener jfilechooser

我知道这可能是一个荒谬的问题,但是我一直在努力倾听JFileChooser在开放时的变化。

当用户点击APPROVE_OPTION或CANCEL_OPTION时,我不想听。我的目标是在用户选择时计算文件,因为如果它达到限制(例如,20个选定的文件),我想显示错误消息或类似的东西。

我尝试过很多东西,例如获取JfileChosser对象可以访问的KeyStrokes,Binds,All Listeners,......但是没有任何效果。

如果有人可以帮助我......;)

谢谢,无论如何!

1 个答案:

答案 0 :(得分:0)

抱歉延误。

但是在评论的帮助下,我可以做到。 当按钮超过阈值时,我取消设置按钮,因此用户无法选择。

这就是:

import java.awt.Container;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Example extends JFrame{

    public static void main(String[] args) {
        new Example();
    }
    public Example() {
        Container c = getContentPane();

        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setMultiSelectionEnabled(true);
        fileChooser.setDialogTitle("Max 20 files");
        fileChooser.addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                // TODO Auto-generated method stub
                if(fileChooser.getSelectedFiles().length>20){
                    JOptionPane.showMessageDialog(null, "20 Files Max.\n", getWarningString(), JOptionPane.ERROR_MESSAGE, null);
                    fileChooser.setControlButtonsAreShown(false);
                }
                else{
                    fileChooser.setControlButtonsAreShown(true);
                }
            }
        });
        int result = fileChooser.showOpenDialog(this);

    }
}