Cambiare colore a oggetto 2D

di il
1 risposte

Cambiare colore a oggetto 2D

Ciao a tutti
vorrei scrivere un semplice programma che tramite la pressione di un JButton cambia il colore di un oggetto 2D (in questo caso un cerchio). ecco il codice:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;

/**
 *
 * @author Rug
 */
public class Cerchio extends JPanel implements ActionListener{
    
    private int xmin,ymin;
    private Color colore;
    private Graphics g;
    
    public Cerchio(int xmin, int ymin ){
        
        this.colore = Color.BLUE;
        this.xmin = xmin;
        this.ymin = ymin;
        
        JButton but = new JButton("Cambia colore");
        add(but);
        but.addActionListener(this);
        
    }
    
    public Color getColor(){
    
        return this.colore;
    
    }
    
    public void paintComponent(Graphics g){
    
        super.paintComponent(g);
        
        g.setColor(this.colore);
        g.fillOval(this.xmin, this.ymin, 30, 30);
        
    }
    
//qui c'è l'errore: non ho capito come funzionano gli oggetti Graphics.....

    @Override
    public void actionPerformed(ActionEvent e) {
    
        if(this.colore == Color.BLUE){
            this.colore = Color.YELLOW;
            paintComponent(g);
        }
        

        if(this.colore == Color.YELLOW){
            this.colore = Color.BLUE;
            paintComponent(g);
        }
        
    }
    
}
poi ho creato una classe che estende JFrame in cui incollo un oggetto Cerchio e un main che esegue il tutto.... help

1 Risposte

  • Re: Cambiare colore a oggetto 2D

    Purtroppo al momento non posso compilare il codice, ma cosi ad occhio vedo 2 errori:
    1) elimina questa riga: " private Graphics g;" non serve a niente creare un oggetto di tipo graphics.
    2) nell'ActionPerformed devi sostituire paintComponent(g) con repaint(); E' sbagliato invocare direttamente paintComponent(g)!
Devi accedere o registrarti per scrivere nel forum
1 risposte