Ik heb hier een java applicatie, waar ik realtime grafieken moet gaan tekenen. Echter, als ik één grafiek laat tekenen, kan ik er niet nog één tekenen. Ik snap alleen niet waarom niet.
Dit is zeg maar het relevante gedeelte uit de applicatie
En dit is de klasse die de grafiek genereert:
Sorrie als het een beetje veel code is, maar ik snap niet waarom ik niet twee grafieken kan tekenen en ik zit nogal tegen de deadline.
Als ik het programma nu run, zie ik alleen de bovenste grafiek. Als ik in het programma in de paint de eerste grafiek weghaal, zie ik wel de tweede grafiek, maar dus niet meer de eerste (die heb ik immers uit de paint weg gehaald). Ik wil ze echter allebei zien, maar dat laatste schijnt absoluut niet te kunnen.
Weet iemand waarom, en nog beter, wat ik daar aan kan doen?
Dit is zeg maar het relevante gedeelte uit de applicatie
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| import java.awt.*; import java.awt.event.*; import java.lang.*; public class TestKlasse extends Frame { private Button start; private boolean analyse; private Grafiek grafiekje, grafiekje2; public TestKlasse() { setLayout( null ); setBackground( Color.lightGray); addWindowListener( new VensterHandler() ); analyse = false; //De start/stop knop start = new Button( "start" ); start.setBounds( 385, 250, 70, 40 ); start.addActionListener( new KnopHandler() ); add( start ); //Einde knop grafiekje = new Grafiek( 100, 75, 220, 110, 140 ); grafiekje2 = new Grafiek( 100, 255, 220, 110, 140 ); } public void paint( Graphics g ){ //ruimte voor grafiek g.setColor( Color.white ); g.fillRect( 95, 90, 220, 110 ); //ruimte voor grafiek2 g.setColor( Color.white ); g.fillRect( 95, 260, 220, 110 ); grafiekje.paint( g ); grafiekje2.paint( g ); } //klasse om het afsluitenkruisje werkzaam te maken private class VensterHandler extends WindowAdapter { public void windowClosing( WindowEvent e ) { dispose(); System.exit( 0 ); } } private class KnopHandler implements ActionListener{ public void actionPerformed( ActionEvent e ) { if( start.getLabel().equals( "start" ) ){ analyse = true; start.setLabel( "stop" ); analyse = true; repaint(); } else{ analyse = false; start.setLabel( "start" ); analyse = false; repaint(); } } } public void update(Graphics g){ if(analyse){ //random grafiekjes maken grafiekje.addWaarde((int)(10 * Math.random() * ( 10 * Math.random()))); grafiekje2.addWaarde((int)(10 * Math.random() * ( 10 * Math.random()))); //voorkomen dat het iets te snel gaat try { Thread.sleep( 50 );} catch( InterruptedException e ){} repaint(); } paint(g); } } |
En dit is de klasse die de grafiek genereert:
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
| import java.awt.*; import java.util.*; public class Grafiek extends Panel { private int x, y, breedte, hoogte, max; private Vector waarden; public Grafiek(int x, int y, int breedte, int hoogte, int max) { this.x = x; this.y = y; this.breedte = breedte; this.hoogte = hoogte; this.max = max; waarden = new Vector(); for( int i = 0; i < max; i++ ){ waarden.addElement( new Integer(0) ); } } public void update(Graphics g){ paint( g ); } public void paint(Graphics g) { g.setColor(Color.red); for( int i = 0; i < waarden.size(); i++ ){ g.drawLine(i + x, y + hoogte - Integer.parseInt(waarden.elementAt(i).toString()), i + x, y + hoogte-Integer.parseInt(waarden.elementAt(i+1).toString())); } } public void addWaarde( int waarde ) { waarden.removeElementAt(0); waarden.addElement(new Integer( waarde ) ); repaint(); } public void setMax( int waarde ) { this.max = waarde; } } |
Sorrie als het een beetje veel code is, maar ik snap niet waarom ik niet twee grafieken kan tekenen en ik zit nogal tegen de deadline.
Als ik het programma nu run, zie ik alleen de bovenste grafiek. Als ik in het programma in de paint de eerste grafiek weghaal, zie ik wel de tweede grafiek, maar dus niet meer de eerste (die heb ik immers uit de paint weg gehaald). Ik wil ze echter allebei zien, maar dat laatste schijnt absoluut niet te kunnen.
Weet iemand waarom, en nog beter, wat ik daar aan kan doen?
edit:
oja, ik werk hier met de java 1.1.8. I.v.m. school moet ik daar genoegen mee nemen. Net zoals ik genoegen moet nemen met dat ik geen swing kan gebruiken (voor hier niet echt boeiend maargoed), maar vandaar dus die Integer ParseInt constructie
oja, ik werk hier met de java 1.1.8. I.v.m. school moet ik daar genoegen mee nemen. Net zoals ik genoegen moet nemen met dat ik geen swing kan gebruiken (voor hier niet echt boeiend maargoed), maar vandaar dus die Integer ParseInt constructie
[ Voor 7% gewijzigd door Verwijderd op 23-06-2003 18:58 ]