我知道这可能是一个荒谬的问题,但是我一直在努力倾听JFileChooser在开放时的变化。
当用户点击APPROVE_OPTION或CANCEL_OPTION时,我不想听。我的目标是在用户选择时计算文件,因为如果它达到限制(例如,20个选定的文件),我想显示错误消息或类似的东西。
我尝试过很多东西,例如获取JfileChosser对象可以访问的KeyStrokes,Binds,All Listeners,......但是没有任何效果。
如果有人可以帮助我......;)
谢谢,无论如何!
答案 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);
}
}