Pseudo JProgressBar

Status
Nicht offen für weitere Antworten.

BAAAM

Mitglied
Hallöchen,

ich sitze seit über einer Stunde an dem bekannten Problem der JProgressBar. Ich hab auch die Suchfunktion benutzt und mir die Threads durchgelesen, aber die halfen mir bei meinem spezielleren Problem nicht weiter.

Meine JProgressBar soll einen nicht vorhandenen Zustand einer Funktion darstellen. Also die JProgressBar soll sich innerhalb einer gewissen Zeit von 0 Fortschritt auf 100 auffüllen, obwohl kein Prozess läuft.

Ist dies möglich ohne zwei Threads zu benutzen, weil der PC ja keinen anderen Prozess ausführen muss? Hier mein bisheriger Code:

Code:
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;

class Zeit extends TimerTask
{
	public void run()
	{
		ProgressBar.fortschritt += 10;
		ProgressBar.fort.repaint();
	}
}

public class ProgressBar extends JFrame
{
	static JPanel c = new JPanel();
	static int fortschritt = 0;
	
	static JProgressBar fort = new JProgressBar();
	
	public ProgressBar()
	{
		c.setLayout(null);
				
		c.add(fort);
		fort.setBounds(200, 200, 200, 30);
		fort.setValue(fortschritt);
			
		setContentPane(c);
	}
	
	public static void main(String[] args)
	{
		JFrame fenster = new ProgressBar();
		
		fenster.setVisible(true);
		fenster.setSize(500, 500);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		TimerTask aufgabe = new Zeit();
		Timer zeitgeber = new Timer();
	
		zeitgeber.schedule(aufgabe, 0, 100);
	}
}

Ich hab probiert mit einem Timer den Fortschritt zu erhöhen und die ProgressBar neu zu zeichnen, aber es funktioniert nicht.

Vielen Dank für Antworten :wink:

MfG
BAAAM
 
B

Beni

Gast
BAAAM hat gesagt.:
Code:
	public void run()
	{
		ProgressBar.fortschritt += 10;
		ProgressBar.fort.repaint();
	}
Du erhöhst hier das Feld "fortschritt" was ja gut und nett ist, aber wieso sollte sich "fort" für die Veränderung in diesem Feld interessieren? Es gibt absolut keine Verbindunden zu dem Feld, nur weil es einmal gelesen wurde bedeutet das nichts.

Ich vermute Du denkst, dass du durch den Aufruf von "fort.setValue" "fort" irgendwie mit "fortschritt" verdrahtest? In Wirklichkeit legst du hier "fortschritt" auf den Kopierer und schickst "fort" dann nur eine Kopie.

Wenn du noch überhaupt keinen zusätzlichen Thread benutzen willst solltest du "javax.swing.Timer" verwenden. Der Arbeitet nämlich im EDT (Event Dispatcher Thread). Andere Timer werden hingegen zusätzliche Threads starten.

Am Schluss kann das dann so aussehen:
Code:
package test;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.Timer;

public class ProgressBar extends JFrame{
    private JProgressBar fort = new JProgressBar();

    public ProgressBar(){
        add( fort );
        fort.setMinimum( 0 );
        fort.setMaximum( 100 );
        fort.setValue( 0 );
    }

    public void increase(){
        fort.setValue( fort.getValue()+5 );
    }

    public static void main(String[] args){
        final ProgressBar fenster = new ProgressBar();

        fenster.setSize(500, 500);
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        fenster.setVisible( true );
        
        Timer timer = new Timer( 100, new ActionListener(){
            public void actionPerformed( ActionEvent e ) {
                fenster.increase();
            }
        });
        timer.setRepeats( true );
        timer.start();
    }
}
 

BAAAM

Mitglied
Vielen Danke.
Das war genau mein Fehler. Ich hab einfach vergessen der JProgressBar mit setValue() den höheren Wert zuzuordnen.
Das hab ich selbst gemerkt und jetzt funktioniert auch alles.

Trotzdem Danke an Beni für die ausführliche Erklärung von javax.swing.Timer (Ich hab wirklich gedacht ich verdrahte fortschritt mit der JProgressBar)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Pseudo-Code Java Basics - Anfänger-Themen 5
E Best Practice Exaktes Rechnen mit (Pseudo-)Rationalen/Realen Zahlen. Operations Zuweisung für (eigene) Klassen Java Basics - Anfänger-Themen 3
H Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen Java Basics - Anfänger-Themen 5
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
E jProgressbar, 6 Versuche, welche value angeben ? Java Basics - Anfänger-Themen 3
E jProgressBar auf 0 stellen Java Basics - Anfänger-Themen 1
E JProgressbar Java Basics - Anfänger-Themen 8
M JProgressBar wird nicht richtig angezeigt Java Basics - Anfänger-Themen 8
S JProgressbar mit individuellem Start/Endpunkt Java Basics - Anfänger-Themen 11
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
S JProgressBar richtig anwenden Java Basics - Anfänger-Themen 27
N JProgressBar Java Basics - Anfänger-Themen 8
K Threads jProgressBar update Java Basics - Anfänger-Themen 14
J JProgressBar - wird nicht geupdated Java Basics - Anfänger-Themen 3
H JProgressBar wird nicht aktualisiert Java Basics - Anfänger-Themen 7
S jProgressBar läuft nicht! Java Basics - Anfänger-Themen 13
H Aktualisierung des JProgressBar in Abhängigkeit eines Threads Java Basics - Anfänger-Themen 5
Y jprogressbar beenden? Java Basics - Anfänger-Themen 4
L JProgressBar für FileUpload Java Basics - Anfänger-Themen 3
G JProgressBar - XP style Java Basics - Anfänger-Themen 4
G JProgressBar während dem ausführen einer Funktion Java Basics - Anfänger-Themen 3
S jProgressBar Java Basics - Anfänger-Themen 3
G JProgressBar Java Basics - Anfänger-Themen 2
G JProgressBar#2 Java Basics - Anfänger-Themen 2
G JProgressBar Java Basics - Anfänger-Themen 7
G jProgressBar value aus anderer Klasse heraus verändern Java Basics - Anfänger-Themen 7
B jProgressBar mit while nicht for Java Basics - Anfänger-Themen 13
K JProgressbar, zur laufzeit steuern Java Basics - Anfänger-Themen 7
V JProgressBar anklickbar? Java Basics - Anfänger-Themen 2
A Timer + JProgressBar Java Basics - Anfänger-Themen 4
G in JProgressBar Fortschritt anzeigen Java Basics - Anfänger-Themen 8
P JDialog & JProgressBar Java Basics - Anfänger-Themen 2
Z Problem mit JProgressBar Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben