Ułożenie panelu w frame.

0

Hey. Mam okienko o rozmiarze 1024x768 (szer., wys.). Chcę w nim sobie ułożyć panel w miejscu wybranym przeze mnie. Np. jak w HTMLu chcę ustawić sobie diva 100px od lewej i 50 od góry to piszę:

<div style="margin-left: 100px; margin-top: 50px"></div>

Takie coś powinni zrobić w JAVie bo w tej chwili to jest istna masakra. Zrobiłem JPanel, ustawiłem mu tło żeby go widzieć i nadałem mu setBounds (odległości x, y i rozmiar). Z tym że zamiast kulturalnie się przesunąć, jak zrobiłby powyższy div to on zaczyna zajmować całego frejma. Wiem że to coś ma wspólnego z Layoutami, ale najchętniej te Layouty bym powywalał bo właściwie żaden nie działa tak jakbym chciał (albo w ogóle). Czy więc jest jakiś prosty a'la htmlowski sposób ułożenia elementów na Frame/w Panelu/Dialogu itd.? Albo chociaż biblioteka, która by to symulowała?

0

Jak chcesz się męczyć i ustawiać komponenty ręcznie, to wyłącz menadżera.

setLayout(null);
0

OK, z tym że to nie współpracuje za bardzo z JAVA2D. Tzn, jak chcę narysować kwadrat to funkcja rysująca przyjmuje parametry takie same jak setBounds(cordx, cordy, w, h) i ja chciałbym to wpakować w panel i przesuwać sam panel. Ale jak upcham to rysowanie w klasę i obiekt tej klasy do panelu to to nie działa jakbym chciał. Albo nic nie wyświetla albo gdzieś w kosmicznym miejscu.

Jeszcze jedno. Gdy daję setLayout(null) to się nic nie wyświetla gdy chcę wrzucić np. panel do panelu. Gdy zakomentuję //setLayout(null) to ułożenie się w ogóle nie zgadza. Kwadracik powinien być w lewym górnym rogu a nie pośrodku.

http://wklej.org/id/983633/

http://imageshack.us/photo/my-images/405/beztytuuvuax.png/

0

Kod. który zamieściłeś jest błędny, nie można go skompilować. Taki konstruktor Frame frame = new Frame("Haha", 1024, 768); nie istnieje.

0

Przepraszam za tę 23 linijkę ale zapomniałem usunąć a byłem bardzo zdenerwowany (a "c" nie weszło bo szybko pisałem :P). Tutaj cały kod:

Main.java
http://wklej.org/id/983646/

Frame.java
http://wklej.org/id/983648/

0

Kod jest zdecydowanie zbyt skomplikowany, pogubisz się w rozmieszczaniu elementów.
W klasie Frame nie wyłączyłeś layoutu zatem setBounds() wywołane dla obiektu panel nie ma żadnego znaczenia, panel2 jest w środku bo go wsadziłeś w środek.

panel2.setBounds(100, 50, 250, 250);

zamień na

panel2.setBounds(0, 0, 250, 250);
0

Dzięki jest już lepiej, tylko jeszcze w tym niebieskim panelu powinien siedzieć kwadracik czerwony rysowany przez Graphics 2D z klasy Cos.

0

Musisz gdzieś tego Cosia umieścić:

Cos cos = new Cos();
cos.setLocation(120,120);

i nadać mu rozmiar:

    public Cos()
    {
         setSize(new Dimension(10,10));   
    }
0

Ok teraz wszystkie prostokąty "są w sobie". Dzięki! Dziedzicząc po JPanel, tworzę jakby panel? Bo skoro dałem setSize w klasie Cos to chyba tak się dzieje

1 użytkowników online, w tym zalogowanych: 0, gości: 1