Progressbar mit Rückgabe-Wert nach Speichern

Hallo,

ich habe jetzt die Thread-Anwendung getestet.

Aber wenn ich auf unsere Produktiv-Anwendung die Thread-Technik zum Laufen kriegen möchte, dann zeichnet meine JProgressBar nicht korrekt neu, obwohl sie ständig von dem Thread durchlaufen wird (unabhängig vom Rückgabetyp des Threads).

Das ganze ist wird über einen JButton - ActionListener aufgerufen. Ich zeige es an meinen aktuellen Code:

Code im Hauptformular
Code:
getSuchButton().addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent aActionEvent) {

      final ProgressDialog lProgressDialog = new ProgressDialog("Suche...");
      new Thread(lProgressDialog).start();

      new Thraed(new Runnable() {
          public void run() {
             // 1. Methodenaufrufe zu SessionBean (Daten holen)
             // 2. Methodenaufrufe zu Table (Daten in die Tabelle setzen)
          }
      }).start();
  }
});

Code der Progressbar-Dialog
Code:
public class ProgressDialog extends JDialog implements Runnable {

	private static final long	serialVersionUID	= -900018691306280601L;

	private boolean			fProgressStart	= false;
	
	private ProgressPanel	fProgressPanel	= null;
	
	private int				fValue			= 0;
	
	public ProgressDialog(String aTitle) {
		super(ApplicationSingleton.getInstance().getMainWindowControl().getMainWindowFrame(), aTitle, false);		
		
		fProgressStart = true;
		
		setLocationRelativeTo(null);
		
		fProgressPanel = new ProgressPanel(); // enthält Panel mit JProgressbar							
		setLayout(new BorderLayout());
		getContentPane().setBackground(new Color(204, 229, 255));
		getContentPane().add(fProgressPanel, BorderLayout.CENTER);
		setSize(500, 100);

		setVisible(true);
	}
	
	public void run() {
		
		boolean lValueAdded = true;
					
		while (fProgressStart) {
			
			if (lValueAdded) {
				fValue++;
			} else {
				fValue--;
			}			
			
			if (fValue >= 100) {
				lValueAdded = false;
				fValue = 100;
			} else if (fValue <= 0) {
				lValueAdded = true;
				fValue = 0;
			}
			
			try {
				Thread.sleep(10);

				EventQueue.invokeLater(new Runnable() {
					public void run() {
						fProgressPanel.getProgressBar().setValue(fValue);
					}
				});
					

			} catch (Exception aException) {
				aException.printStackTrace();
			}

		}

	
	}

	@Override
	public void dispose() {
		
		fProgressStart = false;
					
		setVisible(false);		
		
		super.dispose();
	}
 
Zurück