Beste mensen,
ik ben vrijwel Java-newbie, maar daar gaat het niet over. Mijn probleem is het volgende: ik heb een simpel programma geschreven, dat bij een klik op de knop een zwarte lijn en een rood vierkant tekent; het vreemde hierbij is dat ik bij 1 keer op de knop klikken de beide figuren maar even zie. Als ik nog een keer op de knop klik, zijn beide figuren blijvend te zien. Waarom zijn de beide figuren niet meteen, na 1 keer op de knop klikken, te zien?
ik ben vrijwel Java-newbie, maar daar gaat het niet over. Mijn probleem is het volgende: ik heb een simpel programma geschreven, dat bij een klik op de knop een zwarte lijn en een rood vierkant tekent; het vreemde hierbij is dat ik bij 1 keer op de knop klikken de beide figuren maar even zie. Als ik nog een keer op de knop klik, zijn beide figuren blijvend te zien. Waarom zijn de beide figuren niet meteen, na 1 keer op de knop klikken, te zien?
code:
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
| import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class KaartApplicatie
{
public static void main(String[] args)
{
PercentageFrame p = new PercentageFrame();
p.setSize(800,600);
p.show();
}
}
class PercentageFrame extends JFrame
{
private JButton knop_weg;
public PercentageCanvas percCanvas;
private Container pane = new Container();
public PercentageFrame() {
pane = getContentPane();
knop_weg = new JButton("Voeg weg toe");
knop_weg.setBounds(25, 175, 140, 20);
pane.add(knop_weg);
percCanvas = new PercentageCanvas();
percCanvas.setBounds(400,0,400,600);
pane.add(percCanvas);
knop_weg.addActionListener(new PlaatsLuisteraar());
}
class PlaatsLuisteraar
implements ActionListener {
public void actionPerformed(ActionEvent e) {
percCanvas.setBounds(400,0,400,600);
percCanvas.paint();
}
}
class PercentageCanvas extends JComponent {
public void paint() {
Graphics g = getGraphics();
g.setColor(Color.black);
g.drawLine(0,0,100,100);
g.setColor(Color.red);
g.fillRect(200,200,200,10);
}
}
} |