Ich habe irgendwie Probleme mit der Thread Programmierung (muss zugeben bin hier auch grad am Anfang)
das ZIEL: Ich habe ein Programm geschrieben, welches am Anfang einen Verzeichnisbaum einließt. diese einlesen dauert je nach dem unterschiedlich lange. Und um dem Anwender zu "zeigen", dass das Programm noch läuft, soll ein Info-Fenster erscheinen.
So nun hier mal der Code:
Also der Aufruf der Methode funktioniert, auch in einem eigenen Thread. Aber wie gesagt, wird er nicht unter brochen.
Irgendwie funzt das t.interrupt() nicht. Bei der Überprüfung (t.interrupted()) erscheint false
anbei poste ich auch mal die Mehtoden die Aufgerufen werden in der "run" Methode
bei meldungAnzeigen wird 3 übergeben, es wird also das Opjekt InitialisierungDialog() instanziert. hier dazu der Code:
(Ist aber nur Standard NetbeansCode vom Gui Editor, also eigentlich nix besonderes und sollte den Thread nicht beeinflussen.
kann mir hierzu jemand helfen ?
das ZIEL: Ich habe ein Programm geschrieben, welches am Anfang einen Verzeichnisbaum einließt. diese einlesen dauert je nach dem unterschiedlich lange. Und um dem Anwender zu "zeigen", dass das Programm noch läuft, soll ein Info-Fenster erscheinen.
So nun hier mal der Code:
Code:
public List initProgressbarList(){
Runnable initialisierungsFenster = new Runnable() {
public void run() {
m.meldungAnzeigen(m.INITIALISIERUNG_TYPE);
}
};
Thread t = new Thread(this.getThreadGroup(),initialisierungsFenster, "Fenster");
t.start();
List listTemp1 = new ArrayList();
List listTemp2 = new ArrayList();
listTemp1 = initialisiereTree(filesourceObjekt.listFiles());
listTemp2 = initialisiereTree(filedestinationObjekt.listFiles());
if (listTemp1.size()>=listTemp2.size()){
this.auswahl = 1;
t.interrupt();
System.out.println(t.interrupted());
return listTemp1;
}
else {
this.auswahl = 2;
t.interrupt();
System.out.println(t.interrupted());
return listTemp2;
}
}
Also der Aufruf der Methode funktioniert, auch in einem eigenen Thread. Aber wie gesagt, wird er nicht unter brochen.
Irgendwie funzt das t.interrupt() nicht. Bei der Überprüfung (t.interrupted()) erscheint false
anbei poste ich auch mal die Mehtoden die Aufgerufen werden in der "run" Methode
Code:
public void meldungAnzeigen(int messageType){
switch (messageType){
case 1:{
JOptionPane pane = new JOptionPane();
pane.setMessageType(pane.INFORMATION_MESSAGE);
pane.showMessageDialog(null,"Synchronisation Erfolgreich");
break;
}
case 2:{
JOptionPane pane = new JOptionPane();
pane.setMessageType(pane.ERROR_MESSAGE);
pane.showMessageDialog(null,"Synchronisationen ist fehlgeschlagen\n" +
"bitte ErrorProtokoll einsehen");
break;
}
case 3:{
InitialisierungDialog initMessage = new InitialisierungDialog();
initMessage.setVisible(true);
break;
}
}
}
bei meldungAnzeigen wird 3 übergeben, es wird also das Opjekt InitialisierungDialog() instanziert. hier dazu der Code:
(Ist aber nur Standard NetbeansCode vom Gui Editor, also eigentlich nix besonderes und sollte den Thread nicht beeinflussen.
Code:
/*
* initialisierung.java
*
* Created on 26. Dezember 2006, 14:47
*/
package Gui;
/**
*
* @author Reichel
*/
public class InitialisierungDialog extends javax.swing.JFrame {
/** Creates new form initialisierung */
public InitialisierungDialog() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jProgressBar1 = new javax.swing.JProgressBar();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jButton1.setText("jButton1");
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Initialisiere");
setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
setEnabled(false);
setResizable(false);
setUndecorated(true);
jProgressBar1.setIndeterminate(true);
jLabel1.setFont(new java.awt.Font("Arial Rounded MT Bold", 0, 14));
jLabel1.setText("Initialisierung lauft");
jLabel2.setFont(new java.awt.Font("Arial Rounded MT Bold", 1, 11));
jLabel2.setText("Bitte Warten Sie...");
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
.add(org.jdesktop.layout.GroupLayout.LEADING, jProgressBar1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(org.jdesktop.layout.GroupLayout.LEADING, jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(org.jdesktop.layout.GroupLayout.LEADING, jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jLabel2)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jProgressBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JProgressBar jProgressBar1;
// End of variables declaration
}
kann mir hierzu jemand helfen ?