Swing Progressbar Problem

VGLink

Mitglied
Hallo Alle zusammen. Ich hab mich jetzt mit der Progressbar beschäftigt und sie möchte einfach nicht ihren Wert ändern. Ich hab eine GUI erstellt wo man den Zielpfad zur Startdatei angibt und einen weiteren Pfad zum Speicherort. Drück man nun auf start, erstellt das Programm einen neuen Thread in dem Rechnungen vollzogen werden und in dem Thread greif ich mit super.PBar auf die progressbar zu und setze den neuen Wert, doch leider tut sich dort nix. Die Bar bleibt bei 0%.

Beispiel zum code:

Java:
private void EncryptActionPerformed(java.awt.event.ActionEvent evt) {                                        

        String start;
        String ziel;
        start = Dateipfad.getText();
        ziel = Zielpfad.getText();
        Thread encrypt = new Thread(new Encrypting(start, ziel));
        encrypt.start();

    }

Im Thread wird dann in einer Schleife rechnungen ausgeführt und in der Schleife dann geschaut wie viele Rechnungen es insgesamt sind und bei der wievielten das Programm nun ist. Im 3 Satz wird dann der Prozentwert ausgerechnet und per super.PBar.setValue() der Prozentbar übergeben.Da die Rechnung nicht im EVT Listener ist wird dieser ja nicht blockiert also wo liegt der Fehler? Achso die Encrypting Methode erbt von der Frame Methode.


Hoffe ihr könnt mir helfen.
 
I

irgendjemand

Gast
da du nirgends das event selbst verwendest brauchst du dies vom ActionListener eigentlich garnicht mitgeben ...
viel wichtiger wären da referenzen auf die GUI-klasse oder gleich die JProgressBar ...
ich vermute nämlich das du eine andere JProgressBar manipulierst als die die angezeigt wird ...

etwas mehr code könnte sicher zur lösung beitragen
 

VGLink

Mitglied
Ok also die main.java mal weggelassen. Das ist die komplette Java Datei des Threads.

Java:
package main;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import arraybearbeiten.*;
import crypting.*;

public class Encrypting extends Main implements Runnable {

    private File file;
    private long length;
    private String Start = ("");
    private String Ziel = ("");
    private long status = 0;
    private int prozent = 0;

    public Encrypting(String start, String ziel) {
        file = new File(start);
        length = file.length();
        Start = start;
        Ziel = ziel;
    }

    public void run() {
        try {
            try {
                InputStream inputStream = new FileInputStream(Start);

                OutputStream out = new FileOutputStream(new File(Ziel));

                int read = 0;
                byte[] bytes = new byte[10];

                while ((read = inputStream.read(bytes)) != -1) {

                    status += 10;

                    String[] daten = new String[4];
                    daten[0] = ("");
                    daten[1] = ("");
                    daten[2] = ("");
                    daten[3] = ("");
                    String[] vert = new String[1];
                    vert[0] = ("");
                    Arrayvertauschen tausch = new Arrayvertauschen();

                    tausch.Vertausch(bytes, vert);
                    String Keyvert = ("");

                    for (int i = 0; i < vert[0].length(); i++) {

                        Keyvert += vert[0].charAt(i);

                    }

                    Encryptkey cryptkeyvert = new Encryptkey();

                    cryptkeyvert.Crypt(Keyvert, daten);

                    String Bytesreaded = ("");
                    char m;

                    for (int i = 0; i < bytes.length; i++) {

                        Bytesreaded += (char) bytes[i];

                    }
                    Encrypt cryptbytes = new Encrypt();

                    cryptbytes.Crypt(Bytesreaded, daten);

                    byte[] encryptedtextL = new byte[1];
                    encryptedtextL[0] = (byte) (daten[0].length());
                    byte[] encryptedtext = new byte[(daten[0].length())];

                    for (int i = 0; i < (daten[0].length()); i++) {
                        encryptedtext[i] = (byte) (daten[0].charAt(i));
                    }

                    byte[] Key0L = new byte[1];
                    Key0L[0] = (byte) (daten[1].length());
                    byte[] Key0 = new byte[(daten[1].length())];

                    for (int i = 0; i < (daten[1].length()); i++) {
                        Key0[i] = (byte) (daten[1].charAt(i));
                    }

                    byte[] encryptedkeyL = new byte[1];
                    encryptedkeyL[0] = (byte) (daten[2].length());
                    byte[] encryptedkey = new byte[(daten[2].length())];

                    for (int i = 0; i < (daten[2].length()); i++) {
                        encryptedkey[i] = (byte) (daten[2].charAt(i));
                    }

                    byte[] Key1L = new byte[1];
                    Key1L[0] = (byte) (daten[3].length());
                    byte[] Key1 = new byte[(daten[3].length())];

                    for (int i = 0; i < (daten[3].length()); i++) {
                        Key1[i] = (byte) (daten[3].charAt(i));
                    }

                    int laenge = 1;
                    int schreiben = daten[1].length();

                    out.write(Key0L, 0, laenge);
                    out.write(Key0, 0, schreiben);

                    schreiben = daten[0].length();

                    out.write(encryptedtextL, 0, laenge);
                    out.write(encryptedtext, 0, schreiben);

                    schreiben = daten[3].length();

                    out.write(Key1L, 0, laenge);
                    out.write(Key1, 0, schreiben);

                    schreiben = daten[2].length();

                    out.write(encryptedkeyL, 0, laenge);
                    out.write(encryptedkey, 0, schreiben);

                    this.prozent = (int) (((status * 100) / length));
                    super.PBar.setValue(prozent);
                }

                inputStream.close();
                out.flush();
                out.close();

            } catch (IOException e) {
                System.out.println(e.getMessage());
            }

        } catch (Exception e) {
        }
    }
}


Hab nur eine Progressbar drinnen.
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Ich glaub du verstehst nicht ganz was Vererbung ist, und was dein super aufruf bewirkt. Ich nehme mal an deine "Main" Klasse ist ein JFrame. Wenn deine Encrypting die Main Klasse extended, dann ist die Encrypting Klasse auch ein JFrame, mit eigenem Progressbar.
Wenn du super aufrufst, greifst du nicht auf ein anderes Objekt zu. Du könntest in deinem Fall genausogut this statt super schreiben.
Deine Encrypting Klasse muss/soll/darf mMn gar nicht von Main erben. Was du benötigst, ist einfach auf die aufrufende Main Instanz zugreifen zu können. Dazu übergibst du dein Main Objekt per Konstruktor an deine Encryptingklasse und schreibst dir in der Mainklasse eine getProgressBar Methode.
[Edit]Das ganze geht übrigens auch noch weit eleganter mit EventListenern, das würde dich jetzt aber nur verwirren. Versuchs ruhig es so hinzubekommen.[/Edit]
 
Zuletzt bearbeitet:

VGLink

Mitglied
@ bERt0r das hab ich mir gerade eben auch gedacht nur komm ich nicht darauf wie ich die main übergeben soll.

Ja da ich erst seit Semseteranfang immer wieder was mit Java beschäftige bin ich noch ein rechter Anfänger, das da nicht alles perfekt ist ist mir klar ;D Werd mich in den Ferien hinsetzten und nochmal die Verschlüsselung verbessern und ne schönere GUI usw versuchen zu zaubern ;D Jetzt möcht ich erstmal mit der Progressbar klar kommen ;D

@Michael kurz vor dem schluss Zeile 130 steht es ;D
 
Zuletzt bearbeitet:
I

irgendjemand

Gast
also das "extends" kommt RAUS ... somit auch alles was mit "super." anfängt ...

du erweiterst einfach deinen konstruktor um einen weiteren parameter und legst diese referenz dann in einer instanz-variable ab
 

VGLink

Mitglied
Also mein Ansatz ist jetzt so das ich die Progressbar an die Methode übergebe , doch kann ich diese ja dann nur Im Konstruktor verändern und nicht mehr nachträglich. Ja das mit extends ist mir vorhin auch in den Kopf gekommen aber da hatte ich schon gefragt XD


Hab jetzt die Main übergeben an den Konstruktor, das sieht nun so aus:

Java:
Thread encrypt = new Thread(new Encrypting(start, ziel, Frame));

Dann sieht das im Konstruktor so aus:

Java:
    private File file;
    private long length;
    private String Start = ("");
    private String Ziel = ("");
    private long status = 0;
    private int prozent = 0;
    public Main Frame2;
    public javax.swing.JProgressBar PBaro;

    public Encrypting(String start, String ziel, Main Frame) {
        file = new File(start);
        length = file.length();
        Start = start;
        Ziel = ziel;
        Fame2 = Frame;
        //PBaro = Frame.getPBar();
    }

Denke der Fehler liegt darin das Frame 2 zwar dann das gleich enthält wie meine vorherige main aber Änderungen darauf sich nicht auf die Main beziehen sondern eben nur darauf...
 
Zuletzt bearbeitet:

jgh

Top Contributor
evtl. ist das auch nur ein AnzeigeFehler, der dadurch verursacht wird, weil du meinst Swing- und awt-Komponenten zusammen zu nutzen?!
 

VGLink

Mitglied
Wenn ich jetzt in der Rechnung Frame2.setProgBar(Prozent) ausführe wird die bar nicht geupdatet bleibt also bei 0. Starte den thread mit start(). Inwieweit können sich awt und swing behindern?
 

Michael...

Top Contributor
Wenn ich jetzt in der Rechnung Frame2.setProgBar(Prozent) ausführe wird die bar nicht geupdatet bleibt also bei 0. Starte den thread mit start().
Poste doch mal einen kurzen ausführbaren Code, der das Problem nachstellt. z.B. einen JFrame mit nur einer JProgressBar und einem Thread, der einen beliebigen Wert auf der JProgressBar setzt.
Inwieweit können sich awt und swing behindern?
Denke zwar, dass Dein Problem an anderer Stelle liegt.
Aber hier zur Info:
Mixing Heavyweight and Lightweight Components
Wobei es bei höheren JDK Versionen angeblich möglich sein soll AWT und Swing Komponenten zu mischen - wobei ich keine Notwendigkeit sehe sowas zu tun.
Mixing heavy and light components
 

jgh

Top Contributor
weil sich die Methoden -wann und wie bei swing, bzw bei awt neugezeichnet wird- grundsätzlich unterscheiden.

das wird -höchstwahrscheinlich- nicht das problem sein, sollte aber auf alle Fälle als Ursache ausgeschlossen werden!
also nimm lieber einen JFrame und die Komponenten aus dem swing-package, als die Sachen zu vermischen (Frame mit JProgressBar)
 

VGLink

Mitglied
Um eine Startbare Version zu kriegen musst du nur bei start und zielg jeweils pfade zu Dateien einfügen. Dabei ist es egal was für Dateitypen es sind. Kann aber auch di Jar und den Sourcecode hochladen wenn das weiterhilft.


EDIT: Danke an alle hab es hin gekriegt ;D Das Object das übergeben wurde war leer, hab den Fehler gerade im Debuger gefunden. Danke für die Hilfe und Ideen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit ProgressBar AWT, Swing, JavaFX & SWT 4
thE_29 Problem mit ProgressBar AWT, Swing, JavaFX & SWT 2
F Progressbar Farbe AWT, Swing, JavaFX & SWT 6
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
P JavaFx - Progressbar - Füllen mittels mehreren Tasks AWT, Swing, JavaFX & SWT 0
Bluedaishi JavaFX ProgressBar AWT, Swing, JavaFX & SWT 10
T Starten des Programms mit dem Progressbar AWT, Swing, JavaFX & SWT 2
L Progressbar Laufzeitveränderung AWT, Swing, JavaFX & SWT 4
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
B JavaFX Textfields: Fortschritt als ProgressBar und Progressindicator AWT, Swing, JavaFX & SWT 5
MR._FIRE_Flower progressBar in ein bestehendes Programm einbauen AWT, Swing, JavaFX & SWT 3
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1
I JavaFX Im Controller die ProgressBar mit Task updaten AWT, Swing, JavaFX & SWT 6
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
M JavaFX Progressbar bar und track Komponente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
Z ProgressBar in Eclipse mit Wizard page? AWT, Swing, JavaFX & SWT 1
W Swing ProgressBar update AWT, Swing, JavaFX & SWT 4
A JavaFX Eine Task mit einer ProgressBar verbinden AWT, Swing, JavaFX & SWT 0
H Nimbus ProgressBar Colors AWT, Swing, JavaFX & SWT 9
P Swing Die ProgressBar wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
B SWT Progressbar mit Textoverlay? AWT, Swing, JavaFX & SWT 3
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
T Prozessstatus in Progressbar anzeigen AWT, Swing, JavaFX & SWT 5
J Swing Progressbar aktualisiert sich nicht AWT, Swing, JavaFX & SWT 17
V Persistentes Objekt laden Progressbar AWT, Swing, JavaFX & SWT 7
B ProgressBar während Berechnung AWT, Swing, JavaFX & SWT 4
Tobse LookAndFeel [Windows7] Nativ aussehnde ProgressBar AWT, Swing, JavaFX & SWT 13
J Progressbar mit einfacher Funktion AWT, Swing, JavaFX & SWT 6
D Progressbar AWT, Swing, JavaFX & SWT 5
H Zeile in DefaultTableModel hinzufügen, ProgressBar AWT, Swing, JavaFX & SWT 4
S Upload Progressbar AWT, Swing, JavaFX & SWT 3
S Dateien kopieren mit ProgressBar AWT, Swing, JavaFX & SWT 6
S Swing ProgressBar AWT, Swing, JavaFX & SWT 3
S SWT ProgressBar: Value/Selection anzeigen AWT, Swing, JavaFX & SWT 4
D SWT JFace Wizard Progressbar AWT, Swing, JavaFX & SWT 4
S ProgressBar newRunnable (schon wieder!) AWT, Swing, JavaFX & SWT 9
ModellbahnerTT Progressbar anzeigen AWT, Swing, JavaFX & SWT 5
J Progressbar aktualisierung nach file übergabe AWT, Swing, JavaFX & SWT 7
P Progressbar in java AWT, Swing, JavaFX & SWT 3
K Frage zu ProgressBar, SwingWorker etc. AWT, Swing, JavaFX & SWT 4
V ProgressBar AWT, Swing, JavaFX & SWT 5
D Suche verticale Progressbar AWT, Swing, JavaFX & SWT 2
M Bug; Swing-Worker, Progressbar und Mouse AWT, Swing, JavaFX & SWT 22
P [SWT] - ProgressBar, Prozentzahlen live anzeigen geht nicht AWT, Swing, JavaFX & SWT 13
P JTable sortiert ProgressBar nicht AWT, Swing, JavaFX & SWT 8
L Button ändert eigenes Bild und Progressbar-Value nicht AWT, Swing, JavaFX & SWT 6
B Eine Alternative zur Steuerung einer ProgressBar? AWT, Swing, JavaFX & SWT 5
N ProgressBar --> brauche Hilfe AWT, Swing, JavaFX & SWT 4
G Progressbar aktualisiert sich nicht (vernünftig). WIESO? AWT, Swing, JavaFX & SWT 2
S Anzeige einer Progressbar. AWT, Swing, JavaFX & SWT 3
M Bild laden + ProgressBar AWT, Swing, JavaFX & SWT 2
M ProgressBar in einem Thread? AWT, Swing, JavaFX & SWT 4
C ProgressBar AWT, Swing, JavaFX & SWT 4
Juelin Problem mit TextField.requestFocus(); AWT, Swing, JavaFX & SWT 17
Juelin Problem beim Laden Controller AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25

Ähnliche Java Themen


Oben