Cześć, przy pisaniu prostej aplikacji natknąłem się na problem z grafiką, który pewnie jest prosty, ale nie mogę sobie z nim poradzić i byłbym wdzięczny za pomoc. Mam kod:
import javax.swing.*;
import java.awt.*;
public class Main{
public Main() {
JFrame frame = new JFrame();
frame.setSize(1200, 900);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanel background = new JPanel();
background.setBackground(Color.lightGray);
GreenRect gr = new GreenRect();
gr.setPreferredSize(new Dimension(500,800));
background.add(gr, BorderLayout.WEST);
RedRect rr = new RedRect();
rr.setPreferredSize(new Dimension(500,800));
background.add(rr, BorderLayout.EAST);
frame.add(background);
}
public static void main(String[] args) {
new Main();
}
}
class GreenRect extends JPanel {
public GreenRect() {
setBackground(Color.green);
}
}
class RedRect extends JPanel {
public RedRect() {
setBackground(Color.red);
}
}
class BlackRect extends JComponent {
public BlackRect (){
}
@Override
public void paintComponent(Graphics g) {
super.paintComponents(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.BLACK);
g2d.fillRect(10, 10, 100, 1000);
}
}
Rysujący generalnie ramkę i dwa duże prostokąty - zielony i czerwony:

Teraz wewnątrz zielonego pola chciałbym narysować czarne prostokąty, przy czym zielone pole ma być dla nich tak jakby tłem, więc chcę, a aby były one rozmieszczane względem lewego górnego rogu zielonego pola (we współrzędnych kartezjańskich, tak, aby jak stworzę prostokąt BlackRect na pozycji (50,50) to zostanie on umieszczony 50x50 pixeli od lewego górnego rogu) i jakby któryś prostokąt wystawał, to żeby tej wystającej części nie było widać. Mam funkcję paintComponent, ale w tym ułożeniu - JComponent wewnątrz JPanel wewnątrz JPanel wewnątrz JFrame nie wiem zbytnio jak jej użyć. Dodam, że niektóre prostokąty zostaną narysowane przy włączeniu programu i będą sobie tam stały do końca, a niektóre będą się pojawiały i przesuwały po tym zielonym polu.
Jako że na razie nic co robię dalej nie działa to byłbym wdzięczny za pokazanie jak złożyć do kupy dalsze elementy.