Container i panele

0

Witam.
Chciałbym zrobić okno, które składa się z dwóch pomniejszych okien. Jednego po lewej, w którym byłoby menu, a drugiego po prawej, który byłby "obszarem rysowania". Chcialem w ten sposób wykluczyć możliwość, ze jak ktoś da np. współrzędne obrazkowi 0,0, to żeby nie wchodził on na menu, tylko domyślne 0,0 było już poza tym menu.

Mam taki konstruktor okna:
public SmpWindow()
{
Container contents = getContentPane();
contents.add(new Menu());
contents.add(new DrawWndPane());
}

Menu to okno z menu, a DrawWndPane to okno rysowania. Niestety jak oba okna są dodane, to wyświetla tylko to drugie :/ Jak to naprawić?

0

Ustawić layout na okno.

0

Poczytaj o menadżerach rozkładu.
Masz dwa wyjścia.
Zmienić menadżera dla JFrame (domyślnie jest BorderLayout, którego metoda add(..) wymaga dwóch argumentów: komponent, gdzie_umieścić. Jeśli nie podasz drugiego argumentu, to komponent jest umieszczany w centrum okna, w konsekwencji widać tylko ostatnio dodany komponent.
Podawać drugi argument:

            contents.add(new Menu(),BorderLayout.WEST);
            contents.add(new DrawWndPane(),BorderLayout.CENTER);   
0

Dzięki, po dodaniu drugiego argumentu działa.
Tylko teraz muszę z obu okien usunąć setLayout(null), bo inaczej nie działa. A w takim wypadku ustawione klawisze lecą ciurkiem, a nie jedno po drugim :/ Ja chciałbym im podać położenie.

0

Jak wyłączysz menadżera, to rozmiar i lokalizację komponentu wyznaczasz metodą setBounds(...).

0

To to wiem, ale...
Jeśli w Menu() mam setLayout(null) to wtedy wyświetla mi tylko drugie okienko.
Gdy skasuje to setlayout, albo dam tam BorderLayout, to oba okienka są, tylko, ze wtedy przyciski leżą w rządku na górze, mimo użycia metody setBounds().

0

Daj w oknie Menu GridLayout z jedną kolumną (i tyle wierszy ile jest przycisków).

0

Dzięki :D Co prawda wolałbym sam ustawić, w którym miejscu będą przyciski, i wolałbym żeby nie były tak grube, ale lepszy rydz niz nic ;)

Zapewne będe mieć jeszcze dziś parę pytań, więc miło byłoby, gdybyś "bo" zajrzał jeszcze do tego tematu później (o ile bedziesz miec czas i ochote pomagac :P).

0

Mnie się też nie podobają efekty działania GridLayout, swego czasu napisałem własnego menadżera VerticalLayout to rozmieszczania elementów w jednej kolumnie.

0
  1. Można kolorować przyciski? Jeśli tak, to jak? Jeśli tzreba się z tym duzo bawić, to moge sobie odpuścić, ale jeśli to tylko jakas prosta komenda, to zawsze ejst to jakies urozmaicenie ;)

  2. W oknie po lewej (Menu) mam przyciski. Po kliknięciu na któryś z nim, chcę by w oknie po prawej (DrawWndPane) wyświetlił sie obrazek odpowiadający przyciskowi.
    Mam zrobione wychwytywanie zdarzeń, z napisanem metody rysującej też, ale chyba musze przekażać jakiś kontekst graficzny czy coś?
    Bo w DrawWndPane mam taką metodę:

public void paintComponent(Graphics g)
   {
	   super.paintComponent(g);
       Graphics2D  g2d = (Graphics2D)g;
       g2d.drawLine(0, 0, getSize().width, getSize().height);
   }

I ona powoduje, ze w tym oknie ejst to Od razu narysowane. A ja chciałbym żeby tak się dopiero rysowało po kliknięciu przycisku 1. I chciałbym mieć inne metody, który byłyby dopasowane do konkretnych przycisków.

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