Dodaj do ulubionych

java i panele

04.02.06, 16:26
Stworzyłem test w java i wszystko było by w jak najleszym porządku tylko panel
w którym jest to pytanie jest stałej szerokości i wpisując dłuższa odpowiedz
nie widać jej, poza tym obrazek jest widoczny w połowie, i teraz pytanie jak
zwięszyć przy takim rozkładzie wielkość panelu (a dokładnie jego wysokość)
próbowałem przez p4.set.Size(x,y) ale rezultatów brak. Jeśli chodzi o
dokumentacje to pod hasłem Panel nie widziałem rozmiarów więc pomysły sie
wyczerapły.
Na razie podaje tylko fragment kodu jak będzie potrzeba to wkleje cały (trochę
tego jest).
Jak sposób mój jest głupawy to można coś zaprowonować do zmiany.
//4 pytanie


obrazek=Toolkit.getDefaultToolkit().getImage("matma.jpg");
k=new Rysuj(obrazek, 200, 20, 165, 45);

pytanie4 = new Label("Pytanie 4. ", Label.CENTER);
pytanie4.setFont(new Font("Arial", Font.BOLD, 15));
cbg4 = new CheckboxGroup();
cb41 = new Checkbox("odp 1", cbg4, false);
cb42 = new Checkbox("odp 2", cbg4, false);
cb43 = new Checkbox("odp 3", cbg4, false);
p4 = new Panel();
cb41.addItemListener(this);
cb42.addItemListener(this);//dodajemy do wywoływania
cb43.addItemListener(this);

p4.setLayout(new FlowLayout());
p4.setBackground(Color.blue); // panel p3 kolor niebieski
p4.add(cb41);
p4.add(cb42);
p4.add(cb43);
//koniec 4 pytanie
.......
setLayout(new GridLayout(26, 1));
add(k);
add(pytanie4);
add(p4);
........
Obserwuj wątek
    • prober Re: java i panele 08.02.06, 19:28
      Proponuję spróbować inne layouty (zamiast Flow i Grid).
    • grygoos Re: java i panele 08.02.06, 22:38
      1. Z obrazkiem obcietym do polowy to trudno wyczuc bo widze tu jakis twór pt.
      Rysuj - nie wiadomo co ta klasa robi, wiec trudno stweirdzic dlaczego rysuje sie
      w polowie.

      2. "tylko panel
      > w którym jest to pytanie jest stałej szerokości i wpisując dłuższa odpowiedz
      > nie widać jej"

      tzn gdzie wpisujesz odpowiedz? w panel? jak? chyba w jakis textfield?

      Generalnie zasada jest taka, ze jezeli jakis komponent musi zmienic rozmiar (np
      tekst w labelce zostal wydluzony) to nie wystarczy przerysowanie zawierajacego
      go kontenera, ale musi byc odswiezony layout. Mozna to uzyskac poprzez wywolanie
      metody validate na kontenerze zawierajacym te komponenty (z kodu wnosze ze
      bedzie to this w tym przypadku).

      Po drugie, setSize ustawia rzeczywisty rozmiar komponentu i jak nietrudno sie
      domyslec, metoda ta jest uzywana przez layoutmanagery, ktore same jej uzywaja
      zeby rozmiescic podkompnenty (podobnie jak setLocation lub setBounds wogole).
      uzywanie setSize przy jakimkolwiek layoucie innym niz NULL mija sie z celem.

Nie masz jeszcze konta? Zarejestruj się


Nakarm Pajacyka