• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Aplikacja graficzna w Javie - rysowanie wewnątrz elementu JPanel

Object Storage Arubacloud
0 głosów
339 wizyt
pytanie zadane 30 grudnia 2018 w Java przez k222 Nałogowiec (30,150 p.)

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.

1 odpowiedź

0 głosów
odpowiedź 1 stycznia 2019 przez mbabane Szeryf (79,280 p.)

Podobne pytania

0 głosów
1 odpowiedź 474 wizyt
pytanie zadane 24 października 2019 w Java przez Tajemniczy58 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 491 wizyt
0 głosów
1 odpowiedź 644 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...