Hallo Leute,
habe da ein kleines Problem.
Ich möchte ein Panel dazu bringen, seine Farbe zu ändern wenn ein Button angeklickt wird.
Jedoch klappt es nicht so wie ich es mir vorstelle.
Ich habe das Gefühl, dass die Methode repaint() garnicht die Methode paintComponent() aus der Klasse MeinZeichenPanel aufruft...
Danke für eure Hilfe
habe da ein kleines Problem.
Ich möchte ein Panel dazu bringen, seine Farbe zu ändern wenn ein Button angeklickt wird.
Jedoch klappt es nicht so wie ich es mir vorstelle.
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class EinfacheGui3C implements ActionListener{
JFrame frame;
public static void main(String[] args) {
EinfacheGui3C gui = new EinfacheGui3C();
gui.los();
}
public void los() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Farbe wechseln");
button.addActionListener(this);
MeinZeichenPanel zeichenPanel = new MeinZeichenPanel();
frame.add(BorderLayout.SOUTH, button);
frame.add(BorderLayout.CENTER, zeichenPanel);
frame.setSize(500,500);
frame.setVisible(true);
}
//Methode für den ActionListener
public void actionPerformed(ActionEvent event) {
frame.repaint();
//Wenn der Benutzer klickt, wird repaint() aufgerufen. D.h. das paintComponent auf jedem
//Widget in dem Frame aufgerufen wird
}
}
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class MeinZeichenPanel extends JPanel {
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
int rot = (int) (Math.random() * 255);
int gruen= (int) (Math.random() * 255);
int gelb = (int) (Math.random() * 255);
Color farbe = new Color(rot,gruen,gelb);
g2d.setPaint(farbe);
g2d.fillOval(150, 70, 100, 100);
}
}
Ich habe das Gefühl, dass die Methode repaint() garnicht die Methode paintComponent() aus der Klasse MeinZeichenPanel aufruft...
Danke für eure Hilfe
Zuletzt bearbeitet: