Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
JDialog während automatischer Dateisuche einblenden
Hi, Ich habe mir einen JFileChooser gebastelt mit dem man den Pfad(mindestens das Laufwerk muss gegeben sein) zu einer Datei öffnen kann. Die Methode sucht dann die entsprechende Datei (immer die selbe). Dies kann mitunter schon ein wenig Dauern.
Jetzt hätte ich gerne so lange einen Dialog mit "Bitte Warten". Weis aber nicht wie ich den wieder zubekommen soll, wenn er einmal läuft.
Code:
final JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = fc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
SearchPath = file.getAbsolutePath();
ArrayList afile = searchFile(new java.io.File(SearchPath), "mysql.exe"); //es wird immer mysql.exe gesucht
// hier müsste es hin
if(afile.isEmpty()){
JOptionPane.showMessageDialog(jButtonMySqlExe, "Die Datei MySQL.exe,\n" +
"konnte nicht gefunden werden",
"Information", JOptionPane.INFORMATION_MESSAGE);
jTextArea1.append("MySQL.exe konnte nicht gefunden werden." + "\n");
}else{
MySQLexePath = afile.get(0).toString();
jTextFieldMySqlExe.setText(MySQLexePath);
jTextArea1.append("Pfad: " + MySQLexePath + "." + "\n");
}
} else {
jTextArea1.append("Such nach MySQL.exe abgebrochen." + "\n");
}
In dem Beispiel gibt es eine Klasse Algorithmus, ohne einen Hinweis wo denn nun der Algorithmus in dieser Klasse zu plazieren ist. Die Methode zur Dateisuche muss ich doch auch in die run() Methode schreiben?
Entschuldigt dass ich soviel nachfrage, aber eigentlich sollte ich schon mit dem Projekt fertig sein und mir ist erst gestern aufgefallen dass ich besser etwas während der Dateisuche einblende...
Ich habe einfach mal den Code zur Dateisuche aus deinem Link kopiert und einen JDialog eingebaut. So funktioniert es bei mir:
Code:
import java.io.File;
import java.util.ArrayList;
import javax.swing.JDialog;
import javax.swing.JLabel;
public class test {
static JDialog d = d = new JDialog();
static JLabel l = new JLabel("Bitte warten!");
public static void main(String[] args) {
String searchPath = "C:/";
showDialog(true); //hier wird der Warte-Dialog geöffnet
System.out.println(searchFile (new File(searchPath), "mysql.exe")); //hier lasse ich nach der Datei suchen
showDialog(false); //hier wieder geschlossen
}
public static ArrayList<File> searchFile(File dir, String find) {
File[] files = dir.listFiles();
ArrayList<File> matches = new ArrayList<File> ();
if (files != null) {
for (int i = 0; i < files.length; i++) {
if (files[i].getName().equalsIgnoreCase(find)) {
matches.add(files[i]);
}
if (files[i].isDirectory()) {
matches.addAll(searchFile(files[i], find));
}
}
}
return matches;
}
public static void showDialog(boolean show)
{
if(show == true)
{
d.add(l);
d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
d.setSize(100,100);
d.setVisible(true);
} else {
d.dispose();
}
}
}
Wenn nichts gefunden wird, gibt das Programm einfach "[]" aus und beendet, da müsste man noch was einbauen. Man könnte im JDialog auch einbauen, dass angezeigt wird, welche Datei gerade in der Schleife verglichen wird. Oder du baust irgendwie eine JProgressBar ein, in der 100% die Anzahl der zu Durchsuchenden Dateien ist und relativ dazu wird die durchsuchte Menge angezeigt in %. Oder beides.