私はスイングを使用して画像トレイを作成しています。フォルダーまたはドライブ内のすべての画像ファイルを検索し、これらを実際には JPanel であるトレイに追加します。コードは次のとおりです。
public void findAllPhotos(File f ) {
File[] files = f.listFiles();
for (File file : files) {
if(file.isFile()) {
String path = file.getAbsolutePath();
for(String s : extensions) {
if(path.endsWith(s)) {
addImageToTray(file);
break;
}
}
}
else {
findAllPhotos(file);
}
}
}
void addImageToTray(File fname) {
try {
BufferedImage img = ImageIO.read(fname);
if(img == null) return;
double width = 0, height = 0;
if(iconView) {
width = Math.min(img.getWidth(), iconWidth);
height = Math.min(img.getHeight(), iconHeight);
}
else {
width = Math.min(img.getWidth(), tileWidth);
height = Math.min(img.getHeight(), tileHeight);
}
AffineTransform af = new AffineTransform(AffineTransform.getScaleInstance(width/img.getWidth(), (height/img.getHeight())));
img = new AffineTransformOp(af, AffineTransformOp.TYPE_NEAREST_NEIGHBOR).filter(img, null);
JLabel jl = new JLabel(new ImageIcon(img));
if(iconView) {
jl.setText(" " +fname.getName());
jl.setFont(new java.awt.Font("Microsoft JhengHei UI Light", 1, 11));
}
addActionListner(jl, fname.getAbsolutePath());
jl.setBorder(new BevelBorder(BevelBorder.LOWERED));
tray.add(jl);
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "unknown problem, with tray creation!!!");
}
}
私の問題は、大きなフォルダーやドライブのスキャン中に速度が低下することです。速度を改善する方法を提案してください