B
Bungeefan
Gast
Hey ich habe ein Probelm mit meinem Checksum Programm.
Es werden mit mehreren Threads die Checksummen der Dateien gleichzeitig berechnet.
Jetzt habe ich aber das Problem das er bestimmte Buttons in der GUI erst wieder enablen soll wenn ALLE fertig sind.
Ich hab schon was mit wait() und notify() probiert aber da blicke ich nicht ganz durch.
Wäre nett wenn mit jemand helfen könnte.
Es werden mit mehreren Threads die Checksummen der Dateien gleichzeitig berechnet.
Jetzt habe ich aber das Problem das er bestimmte Buttons in der GUI erst wieder enablen soll wenn ALLE fertig sind.
Ich hab schon was mit wait() und notify() probiert aber da blicke ich nicht ganz durch.
Wäre nett wenn mit jemand helfen könnte.
Java:
btnBrowse.setEnabled(false);
btnCopyMD2.setEnabled(false);
btnCopyMD5.setEnabled(false);
btnCopySHA_1.setEnabled(false);
btnCopySHA_256.setEnabled(false);
btnCopySHA_384.setEnabled(false);
btnCopySHA_512.setEnabled(false);
btnCopyAll.setEnabled(false);
btnVerify.setEnabled(false);
btnVerify.setEnabled(false);
chckbxMD2.setEnabled(false);
chckbxMD5.setEnabled(false);
chckbxSHA1.setEnabled(false);
chckbxSHA256.setEnabled(false);
chckbxSHA384.setEnabled(false);
chckbxSHA512.setEnabled(false);
try {
new Thread(new Runnable() {
@Override
public void run() {
if (chckbxMD2.isSelected()) {
generateHash.add(barMD2);
barMD2.setIndeterminate(true);
generateHash.revalidate();
generateHash.repaint();
try {
Checksum_Utility.instance.md2 = Checksum_Utility.instance.createMD2(datei);
//Berechnet Checksumme
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}
barMD2.setIndeterminate(false);
generateHash.remove(barMD2);
generateHash.revalidate();
generateHash.repaint();
fieldMD2.setEnabled(true);
fieldMD2.setText(Checksum_Utility.instance.md2);
btnCopyMD2.setEnabled(true);
}
chckbxMD2.setEnabled(true);
this.notify();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
if (chckbxMD5.isSelected()) {
generateHash.add(barMD5);
barMD5.setIndeterminate(true);
try {
Checksum_Utility.instance.md5 = Checksum_Utility.instance.createMD5(datei);
//Berechnet Checksumme
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}
barMD5.setIndeterminate(false);
generateHash.remove(barMD5);
fieldMD5.setEnabled(true);
fieldMD5.setText(Checksum_Utility.instance.md5);
btnCopyMD5.setEnabled(true);
}
chckbxMD5.setEnabled(true);
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
if (chckbxSHA1.isSelected()) {
generateHash.add(barSHA1);
barSHA1.setIndeterminate(true);
try {
Checksum_Utility.instance.sha1 = Checksum_Utility.instance.createSHA1(datei);
//Berechnet Checksumme
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}
barSHA1.setIndeterminate(false);
generateHash.remove(barSHA1);
fieldSHA1.setEnabled(true);
fieldSHA1.setText(Checksum_Utility.instance.sha1);
btnCopySHA_1.setEnabled(true);
}
chckbxSHA1.setEnabled(true);
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
if (chckbxSHA256.isSelected()) {
generateHash.add(barSHA256);
barSHA256.setIndeterminate(true);
try {
Checksum_Utility.instance.sha256 = Checksum_Utility.instance
.createSHA256(datei);
//Berechnet Checksumme
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}
barSHA256.setIndeterminate(false);
generateHash.remove(barSHA256);
fieldSHA256.setEnabled(true);
fieldSHA256.setText(Checksum_Utility.instance.sha256);
btnCopySHA_256.setEnabled(true);
}
chckbxSHA256.setEnabled(true);
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
if (chckbxSHA384.isSelected()) {
generateHash.add(barSHA384);
barSHA384.setIndeterminate(true);
try {
Checksum_Utility.instance.sha384 = Checksum_Utility.instance
.createSHA384(datei);
//Berechnet Checksumme
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}
barSHA384.setIndeterminate(false);
generateHash.remove(barSHA384);
fieldSHA384.setEnabled(true);
fieldSHA384.setText(Checksum_Utility.instance.sha384);
btnCopySHA_384.setEnabled(true);
}
chckbxSHA384.setEnabled(true);
}
}).start();
Thread th = new Thread(new Runnable() {
@Override
public void run() {
if (chckbxSHA512.isSelected()) {
generateHash.add(barSHA512);
barSHA512.setIndeterminate(true);
try {
Checksum_Utility.instance.sha512 = Checksum_Utility.instance
.createSHA512(datei);
//Berechnet Checksumme
} catch (NoSuchAlgorithmException | IOException e) {
e.printStackTrace();
}
barSHA512.setIndeterminate(false);
generateHash.remove(barSHA512);
fieldSHA512.setEnabled(true);
fieldSHA512.setText(Checksum_Utility.instance.sha512);
btnCopySHA_512.setEnabled(true);
}
chckbxSHA512.setEnabled(true);
}
});
th.start();
Checksum_Utility.instance.wait();
//--------------------------------------------------------------
btnCopyAll.setEnabled(true);
btnBrowse.setEnabled(true);
btnVerify.setEnabled(true);
//--------------------------------------------------------------
//Das hier soll erst ausgeführt werden wenn ALLE Checksummen berechnet (und angezeigt werden)
} catch (Exception e) {
e.printStackTrace();
}