Hallo.
Der folgende Code erstellt einen Kreis mit einer zufälligen Farbe. Drückt man auf den Knopf unten, wird die Farbe erneut per Zufallsgenerator neu geladen. Was mich aber stutzig macht ist, dass nach dem ersten Knopfdruck oben im Fenster eine Kopie dieses Knopfes erscheint. Diesen Knopf kann man nicht betätigen, und sobald er da ist, will er auch nicht mehr verschwinden.
Hier ist erst einmal der Code:
Wenn ich panel.repaint(); lösche, passiert so ein Müll nicht mehr.
Ich könnte zwar panel mit Rahmen ersetzen, dann würde es auch klappen, allerdings gibt es Programme, bei denen ich unbedingt panel brauche. Bei Rahmen.repaint(); wird ja das ganze Bild komplett gelöscht, und neugezeichnet. Bei panel.repaint(); kommt ja ein neues Bild dazu, und falls ich zb. noch einen Zufallsgenerator für die Position und Maße einstelle, würde ich zusätzlich zu dem alten Bild noch ein neues Bild erhalten.
Lange Rede, kurzer Sinn - kann mir bitte einer erklären, was es mit diesem mystischen Knopf auf sich hat? Wie kann ich sein Erscheinen unterbinden?
Danke!
Der folgende Code erstellt einen Kreis mit einer zufälligen Farbe. Drückt man auf den Knopf unten, wird die Farbe erneut per Zufallsgenerator neu geladen. Was mich aber stutzig macht ist, dass nach dem ersten Knopfdruck oben im Fenster eine Kopie dieses Knopfes erscheint. Diesen Knopf kann man nicht betätigen, und sobald er da ist, will er auch nicht mehr verschwinden.
Hier ist erst einmal der Code:
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class gui implements ActionListener {
public static void main(String[] args) {
gui g = new gui(); g.draw();}//main()
JFrame Rahmen; JButton Farbenknopf; PANEL panel;
public void draw(){
Rahmen = new JFrame("DAS SPIEL");
Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Farbenknopf = new JButton("setze Zufallsfarbe");
Rahmen.getContentPane().add(BorderLayout.SOUTH, Farbenknopf);
Farbenknopf.addActionListener(this);
panel = new PANEL();
Rahmen.getContentPane().add(BorderLayout.CENTER, panel);
Rahmen.setSize(600,600); Rahmen.setVisible(true);
}//draw()
public class PANEL extends JPanel{
public void paintComponent(Graphics g){
int rot = (int)(Math.random()*255);
int grün = (int)(Math.random()*255);
int blau = (int)(Math.random()*255);
Color randcolor = new Color(rot, grün, blau);
g.setColor(randcolor);
g.fillOval(100, 100, 100, 100);
}//paintComponent()
}//inner class PANEL
public void actionPerformed(ActionEvent event){
panel.repaint();
}//actionPerformed()
}//class gui
Wenn ich panel.repaint(); lösche, passiert so ein Müll nicht mehr.
Ich könnte zwar panel mit Rahmen ersetzen, dann würde es auch klappen, allerdings gibt es Programme, bei denen ich unbedingt panel brauche. Bei Rahmen.repaint(); wird ja das ganze Bild komplett gelöscht, und neugezeichnet. Bei panel.repaint(); kommt ja ein neues Bild dazu, und falls ich zb. noch einen Zufallsgenerator für die Position und Maße einstelle, würde ich zusätzlich zu dem alten Bild noch ein neues Bild erhalten.
Lange Rede, kurzer Sinn - kann mir bitte einer erklären, was es mit diesem mystischen Knopf auf sich hat? Wie kann ich sein Erscheinen unterbinden?
Danke!