Io ho utilizzato il codice in rosso per disegnare un rettangolo nel mio progetto, ma avrei due domande:

1) il codice che ho utilizzato è adatto a ciò che dovrei fare, oppure devo cambiarlo?
(mi riferisco al codice che crea il rettangolo)

2) se volessi colorare il rettangolo di rosso, come devo fare?
perché il codice g2.setColor(Color.red); non funziona..

ps: non ho postato il main e l'altra classe perché non dovrebbero servire per la mia richiesta, ma in caso servisse posto tutto..

codice:
package Es_313;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * @author Ongaro Samuele
 */

public class Rectangle  extends JFrame implements ChangeListener, ActionListener {
    private JSlider scrollerR, scrollerG, scrollerB;
    private JLabel labelR, labelG, labelB;
    private JTextField textFieldR, textFieldG, textFieldB;
    private JButton genera;
    
    public Rectangle() {
        // Testo
        labelR = new JLabel("Red");
        labelG = new JLabel("Green");
        labelB = new JLabel("Blue");
        
        // Caselle di Testo
        textFieldR = new JTextField("0");
        textFieldG = new JTextField("0");
        textFieldB = new JTextField("0");
        
        // Bottone
        genera = new JButton("Genera Rettangolo");
        
        // Scroller
        scrollerR = new JSlider(SwingConstants.HORIZONTAL,0, 255, 0);
        scrollerR.setMajorTickSpacing(40);
        scrollerR.setMinorTickSpacing(10);
        scrollerR.setPaintTicks(true);
        scrollerR.setPaintLabels(true);
        
        scrollerG = new JSlider(SwingConstants.HORIZONTAL,0, 255, 0);
        scrollerG.setMajorTickSpacing(40);
        scrollerG.setMinorTickSpacing(10);
        scrollerG.setPaintTicks(true);
        scrollerG.setPaintLabels(true);
        
        scrollerB = new JSlider(SwingConstants.HORIZONTAL,0, 255, 0);
        scrollerB.setMajorTickSpacing(40);
        scrollerB.setMinorTickSpacing(10);
        scrollerB.setPaintTicks(true);
        scrollerB.setPaintLabels(true);
        
        // Posizionamento
        labelR.setBounds(20,15,250,20);
        labelG.setBounds(20,75,250,20);
        labelB.setBounds(20,135,250,20);
        
        textFieldR.setBounds(320,35,40,25);
        textFieldG.setBounds(320,95,40,25);
        textFieldB.setBounds(320,155,40,25);
        
        genera.setBounds(60,220,200,30);
        
        scrollerR.setBounds(20,35,290,40);
        scrollerG.setBounds(20,95,290,40);
        scrollerB.setBounds(20,155,290,40);
        
        Container cp = getContentPane();
        setLayout(null);

        // ggiungi
        cp.add(labelR);
        cp.add(labelG);
        cp.add(labelB);
        
        cp.add(textFieldR);
        cp.add(textFieldG);
        cp.add(textFieldB);
        
        cp.add(genera);
        
        cp.add(scrollerR);
        cp.add(scrollerG);
        cp.add(scrollerB);

        // Ascoltatori
        scrollerR.addChangeListener(this);
        scrollerG.addChangeListener(this);
        scrollerB.addChangeListener(this);
        
        genera.addActionListener(this);
    }
    
    MyColorChooser myColor = new MyColorChooser();
    String cR, cG, cB;
    
    public void paint(Graphics g) {
        Graphics2D g2=(Graphics2D)g;
        
        g2.draw(new Rectangle2D.Double(30,300,320,300));
        g2.setColor(Color.red);
    }
     
    public void stateChanged(ChangeEvent event) {
        if(event.getSource() == scrollerR || event.getSource() == scrollerG || event.getSource() == scrollerB) {
            String iRed = "" +scrollerR.getValue();
            String iGreen = "" +scrollerG.getValue();
            String iBlue = "" +scrollerB.getValue();
            
            textFieldR.setText(iRed);
            textFieldG.setText(iGreen);
            textFieldB.setText(iBlue);
            
            myColor.setColor(iRed, iGreen, iBlue);
        }
    }
    
    public void actionPerformed(ActionEvent e) {
        String c = e.getActionCommand();
        
        if(e.getSource() == genera) {
            // textFieldB.setText(myColor.getColorR());
            
            
        }
    }
}
Grazie mille a tutti..