progress bar läuft nur im hintergrund, und das unsichtbar.. =(



  • hallo leute, also ich bin recht neu in java, und vor allem SEHR grün hinter den ohren, was swing usw betrifft..

    ich wolte meinen kleinn benchmark (jetztige version ist nur ein test) in java schreiben, hab aber das problem, das meine menue-leiste erst wieder weggeht, wenn meine pogressbar auf 100 prozent ist..

    ich hab jetzt x dinge rumprobiert, und die hälfte meines quellcodes steht in kommentar, ich werd mal versuchen, die wichtigsten dinge hier darzu legen

    import java.awt.*;
    import javax.swing.*;
    import java. awt.event.*;
    
    public class Benchmark extends JFrame implements /*Runnable,*/ ActionListener{
    
    JMenu m1 = new JMenu("Menü");
    
    JPanel panelBench = new JPanel();
    
    JMenuItem j1 = new JMenuItem("Benchmark");
    JMenuItem j2 = new JMenuItem("Hilfe");
    JMenuItem j3 = new JMenuItem("Beenden");
    JProgressBar current = new JProgressBar(0, 9999999);
    
    public Benchmark() {
    
    setBounds(450, 350, 350, 260);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    JTextArea out = new JTextArea("Hallo, dies ist ein bald fertiges Benchmarkprogramm. Die Zeiten werden in der nächsten Version nachgeliefert.",8, 20);
    out.setLineWrap(true);
    out.setWrapStyleWord(true);
    m1.add(j1);
    m1.addSeparator();
    m1.add(j2);
    m1.addSeparator();
    m1.add(j3);					//120
    JMenuBar bar = new JMenuBar();
    bar.add(m1);
    setJMenuBar(bar);
    j1.addActionListener(this);
    j3.addActionListener(this);
    panelBench.add(out);
    current.setValue(0);
    current.setStringPainted(true);
    panelBench.add(current);
    setContentPane(panelBench);
    show();
    
    }
    public static void main(String[] args)
    {
    
    //LoadFrame win = new LoadFrame();
    
    Benchmark b = new Benchmark();
    b.setTitle("WIllkommen ");
    boolean z = false;
    b.ignite(z);
    }
    
    public void ignite(boolean f) {
    
    int x = 1;
    while (!f)
    {x+=1;}
    
    lauf();
    }
    
    public void lauf()
    {
    
    for (int i = 0; i < 9999999; i++)
    {
    
    current.setValue(i);
    
    }
    }
    
    public void actionPerformed(ActionEvent avt){
    
    Object src = avt.getSource();
    
    if (src == j1) {
    
    /*Thread runner = new Thread();
    runner.start();
    run();*/
    
    boolean x = true;
    this.ignite(true);
    }
    
    if (src == j3) { System.exit(0); } 
    }
    }
    

    ich denke ich muß irgendwas mit einem thread machen, blicke aber in meinem buch (java2 in 21 tagen) einfach nicht urch wie das geht!!!

    HILFE 🙂



  • Wann immer du eine sich bewegende ProgressBar sehen willst, benötigst du Multithreading, siehe http://www.java-forum.org/de/viewtopic.php?t=8101.

    Was willst du denn messen? Das High-performace-Swing 🙄 dürfte deinen Test ein bisschen verfälschen...



  • 😞 ist doch nur zum üben...

    ich weiß eh das es shit is, aber he... wie soll ich sonst lernen?



  • Also ich bin mir nicht sicher, ob icg bei deinem Source durchblicke. Aber zu deinem Problem:

    Pseudo Source
    public class Benchmark implements Runnable
    {
       private String sButton = "start";
       JButton button = new JButton(sButton);
       JProgressBar progressBar = new JProgressBar();
       private int current;
       private procedur()
       {
          //modify current;
       }
       public void run()
       {
          while(progressBar.getPercentComplete() != 1.0)
          {
             progressBar.setValue(current);
          }
       }
       public void actionPerformed(ActionEvent e)
       {
          String source = e.getActionCommand();
          if(source.equals(sButton)) (new Thread(this)).start();
       }
    }
    

    Hoffe es sind nicht zu viele peiniche Fehler drin 😃


Anmelden zum Antworten