Moinsen,
Ich habe eine kleine sinnlose Swing Anwendung geschrieben, bei der aber ein Problem entstanden ist. Es funktioniert alles so wie es soll, ausser folgendes: Wenn ich auf einen der Buttons klicke, wird der Button oben links in der Ecke nochmal gezeichnet, was natürlich nicht passieren soll. Erst wenn ich die Grööße des Fensters ändere, verschwindet der Button.
Könnte bitte jemand von euch den Code mal bei sich ausführen um zu sehen, ob das dann auch so ist? Ich erwarte nämlich eigentlich dass das alles so richtig ist.
Hier mal der gesamte Code:
|
Quellcode
|
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
|
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CircleRect extends JFrame{
public static void main(String[] args){
CircleRect ksat = new CircleRect();
}
public CircleRect(){
CirclePanel cp = new CirclePanel();
Clistener cl = new Clistener(cp);
JPanel pBot = new JPanel();
this.setLayout(new GridLayout(2,1));
cp.add(new JLabel("Hier stand irgendein Zeug"));
JButton btnC = new JButton("Circle");
btnC.setActionCommand("c");
btnC.addActionListener(cl);
pBot.add(btnC);
JButton btnR = new JButton("Rechteck");
btnR.setActionCommand("r");
btnR.addActionListener(cl);
pBot.add(btnR);
add(cp);
add(pBot);
setVisible(true);
setSize(400,250);
}
}
class CirclePanel extends JPanel{
public boolean circle;
public void paintComponent(Graphics g){
g.setColor(Color.black);
if(circle == true){
g.drawOval(150,50,50,50);
}
else{
g.drawRect(150,50,50,50);
}
}
}
class Clistener implements ActionListener{
CirclePanel cP;
Clistener(CirclePanel c){
cP = c;
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("c"))
cP.circle = true;
if(e.getActionCommand().equals("r"))
cP.circle = false;
cP.repaint();
}
}
|
Um Schönheit oder Sinn geht es hier wirklich nicht, sondern nur um den Grafik Fehler. Und falls es bei euch klappt, weiss jemand woran es bei mir liegen könnte?
Danke schonmal im Voraus an den, der es testet