Ik ben hier al een paar uren mee bezig, op GOT en Google gezocht, maar geen oplossing gevonden...
In een programma wat ik aan het maken ben wil ik de voortgang laten zien in een label.
In de functie schrijfUitvoer heb ik label.setText("Voortgang: " + vg); staan.
Als ik dan de waarde van het label controleer met System.out.print, dan is hij bijgewerkt, maar op het scherm staat nog de oude waarde. Of ik wel of niet label.repaint doe maakt niet uit.
In actionPerformed() werkt de setText wel.
Kan iemand me vertellen hoe ik het werkend krijg?
Alvast bedankt
In een programma wat ik aan het maken ben wil ik de voortgang laten zien in een label.
In de functie schrijfUitvoer heb ik label.setText("Voortgang: " + vg); staan.
Als ik dan de waarde van het label controleer met System.out.print, dan is hij bijgewerkt, maar op het scherm staat nog de oude waarde. Of ik wel of niet label.repaint doe maakt niet uit.
In actionPerformed() werkt de setText wel.
Kan iemand me vertellen hoe ik het werkend krijg?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| public class XMLgenerator implements ActionListener { final JLabel label = new JLabel("Voortgang: 0%"); public Component createComponents() { JButton button = new JButton("Klik"); button.setMnemonic(KeyEvent.VK_I); button.addActionListener(this); label.setLabelFor(button); JPanel pane = new JPanel(new GridLayout(0, 1)); pane.add(button); pane.add(label); pane.setBorder(BorderFactory.createEmptyBorder(30,30,10,30)); return pane; } public void actionPerformed(ActionEvent e) { numClicks++; label.setText("Voortgang: " + numClicks+"%"); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("XMLgenerator"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); XMLgenerator app = new XMLgenerator(); Component contents = app.createComponents(); frame.getContentPane().add(contents, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); XMLgenerator bestand = new XMLgenerator(); bestand.schrijfUitvoer("vdwerf.xml",array); } }); } public boolean schrijfUitvoer(String bestandsnaam, String[][] arruit) { int totaalrecords=100; for (int k=1;k<totaalrecords+1;k++) { //DOE VANALLES try { float eenprocent=totaalrecords/100f; float vg= Math.round((k/eenprocent)*100f)/100f; label.setText("Voortgang: " + vg); label.repaint(); System.out.print(label.getText()+"\n"); } catch (IOException e) { System.err.println(e.getMessage()); return false; } } return true; } |
Alvast bedankt
Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!