01. december 2002 - 14:38
Der er
6 kommentarer og 1 løsning
Thread...JProgressBar
Hvorfor virker dette ikke? package threads2; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Frame1 extends JFrame { BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel(); JButton jButton1 = new JButton(); private boolean stop = false; private int tal; JPanel jPanel2 = new JPanel(); JProgressBar jProgressBar1 = new JProgressBar(); public Frame1() { super(); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(borderLayout1); this.setSize(new Dimension(400, 300)); jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e); } }); this.getContentPane().add(jPanel1, BorderLayout.NORTH); jPanel1.add(jButton1, null); this.getContentPane().add(jPanel2, BorderLayout.CENTER); jPanel2.add(jProgressBar1, null); jProgressBar1.setMaximum(1000); } void jButton1_actionPerformed(ActionEvent e) { new Thread( new Updater(jProgressBar1) ).start(); for(int i=0; i<=100000000; i++) { tal=i; } stop=false; } private class Updater implements Runnable { private JProgressBar bar; public Updater(JProgressBar bar ) { this.bar = bar; } public void run() { while ( ! stop ) { bar.setValue(tal); try { Thread.sleep(100); } catch (InterruptedException ie) { } } } } } Jeg ville gerne se en JProgressBar der stiger langsomt...Men jeg ser en JProgressBar der først bliver sat når min forlykke har kørt.... Mvh Casualty
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
01. december 2002 - 16:21
#1
Hjælper : bar.setValue(tal); bar.repaint(); ?
01. december 2002 - 16:36
#2
Nej desværre
01. december 2002 - 17:24
#3
Det er heller ikke årsagen til fejlen, men er det ikke en fejl med: jProgressBar1.setMaximum(1000); for(int i=0; i<=100000000; i++) { tal=i; } bar.setValue(tal);
01. december 2002 - 18:43
#4
Følgende virker faktisk: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Frame1 extends JFrame { BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel(); JButton jButton1 = new JButton(); private boolean stop; private int tal; JPanel jPanel2 = new JPanel(); JProgressBar jProgressBar1 = new JProgressBar(); private final static int N = 1000; public Frame1() { super(); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(borderLayout1); this.setSize(new Dimension(400, 300)); jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e); } }); this.getContentPane().add(jPanel1, BorderLayout.NORTH); jPanel1.add(jButton1, null); this.getContentPane().add(jPanel2, BorderLayout.CENTER); jPanel2.add(jProgressBar1, null); jProgressBar1.setMaximum(N); jProgressBar1.setStringPainted(true); } void jButton1_actionPerformed(ActionEvent e) { stop = false; jProgressBar1.setValue(0); this.update(this.getGraphics()); new Thread(new Updater(jProgressBar1, this)).start(); for (int i = 0; i <= N; i++) { System.out.println("ok"); tal = i; try { Thread.sleep(1); } catch (InterruptedException ex) { } } stop = true; } private class Updater implements Runnable { private JProgressBar bar; private JFrame f; public Updater(JProgressBar bar, JFrame f) { this.bar = bar; this.f = f; } public void run() { while (!stop) { bar.setValue(tal); f.update(f.getGraphics()); System.out.println("upd"); try { Thread.sleep(1); } catch (InterruptedException ie) { } } } } public static void main(String[] args) throws Exception { Frame1 f = new Frame1(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.pack(); f.setVisible(true); } }
01. december 2002 - 18:44
#5
Man kan oven i købet klikke flere gange på knappen ! Tilsyneladende er det den update der skal til.
03. december 2002 - 14:52
#6
Har du fået løst dit problem ?
23. december 2002 - 14:59
#7
Hej...Ja jeg kom da en del videre..Nu virker det...Tak for hjælpen og undskyld den lange svartid.. Mvh Casualty
Kurser inden for grundlæggende programmering