Gå til innhold

Anbefalte innlegg

Hei

 

Har et skoleprosjekt gående hvor jeg sliter litt med GUIet. Forløpig oppsett, som ikke fungerer noe godt i det hele tatt (det kjører menmen) er:

 

- class Vindu extends som inneholder JTabbedPane som bruker GridLayout(1, 1)

- class Faneinnhold inneholder metoder som returnerer JPanel's som også bruker GridLayout(1, 1)

- som deretter blir lagt til i Vindu via JTabbedPane.addTab()

- i main så opprettes det en JFrame som gjør getContentPane().add(vindu)

 

Utgangspunktet i det her er dette eksempelet hvor det brukes BorderLayout.CENTER, noe som fører til i mitt tilfelle at alle tekstfeltene blir strukket ut til border osv., og jeg trenger dermed noe nytt virker det som.

 

Grunnen til at det er gjort som det er gjort er pga. jeg ikke har funnet noen bedre metode som vi får til å fungere.

Derfor lurer jeg på hvordan jeg burde gjøre dette her. Regner med at vi må endre layout brukt i Vindu og layout til fanene.

 

GUIet er tenkt å se ut som noe slik: (Generert med Netbeans, noe vi ikke kan gjøre)

mUjhb.png

(klikk for full størrelse)

 

Hvilken layout burde vi bruke på

- main sin JFrame som adder Vindu,

- Vindu som er JPanel

- og JPanel'ene som skal ligge i de forskjellige fanene

 

viktigste er å bare få opp Vindu'et som er JPanel, og at det da ikke endrer på inneholdet i fanene.

Endret av Occi
Lenke til kommentar
Videoannonse
Annonse

Dessverre ja, et av kravene til oppgaven er ordrett; "GUI-programmering". Mao. er ikke akkurat å "tegne" det i Netbeans lovlig.

Bruk av grafiske DSL'er (som GUI-designere) er fortsatt programmering! Det kan nok være lurt å gjøre det for hånd i starten - det lærer man mer av, og det er nok derfor dere skal gjøre det - men i praktisk arbeide bruker programmerere som regel designverktøy for å lage GUIs.

Lenke til kommentar

Ser den, men er litt risikabel å satse på noe slikt noe nå - om det rett og slett ikke er lov. Vi har hatt GUI i nå snart to semester, men det har gått treigt, og vi har alltid programmert det for hånd. For å si det slik, læreren bruker TextPad.. Oppgaven er nok beregnet for å kode det for hånd, dessverre.

Lenke til kommentar

Endte med at vi ikke fikk tid til å se mer på GUIet, så resultatet ble en fastsatt størrelse på vinduet, samt GridLayout(0, 2). Med andre ord blir fields, areas og buttons strukket til de fyller plassen sin, og det ser ikke veldig bra ut. Men det fungerer i alle fall :p

Lenke til kommentar

Jepp, GridBagLayout er tingen å gå for.

 

Btw, selv om du går for GridBagLayout så lønner det seg å bruke diverse paneler inni hverandre for å få delt opp ting, ikke bare bruke ett panel med GridBagLayout.

 

Det går forresten sikkert 10x fortere å lære seg gui-programmering hvis du bruker en designer for så å se på koden som blir generert. Har alltid brukt JBuilder til dette, men det er vel et produkt som ikke er å oppdrive lenger. :p

Lenke til kommentar

Ingen dum idé. Tok en liten kikk på koden ved boxlayout(?) som netbeans bruker, og den virket grusom å kode manuelt. Sette alle mulige pixelavstander manuelt. Men må se litt mer på det før jeg uttaler meg helt :)

Lenke til kommentar

Ingen dum idé. Tok en liten kikk på koden ved boxlayout(?) som netbeans bruker, og den virket grusom å kode manuelt. Sette alle mulige pixelavstander manuelt. Men må se litt mer på det før jeg uttaler meg helt :)

Hmmm... JBuilder generer i utgangspunktet layoutene i xylayout (med pixel-størrelse på alt), men man kan (og bør) endre layout til gridbaglayout, så setter den alt opp der, så må man endre på smådill selv.

Lenke til kommentar
  • 3 måneder senere...

Eclipse har fått en utvidelse kalt WindowBuilder som ser ut til å fungere ganske greit.

 

Når det gjelder det å kode GUI manuelt, er jeg stor fan av å bruke kombinasjoner av BoxLayout og GridLayout. GridLayout er greit hvis alle elementene skal være like store, men blir problematisk så snart du vil ha gui-komponenter i ulike størrelser. Jeg pleier ofte å bygge opp gui-et litt lagvis. Så jeg legger gjerne noen få komponenter (f. eks en label og en JTextField) i et eget panel med horisontal BoxLayout. Deretter stacker jeg en rekke av disse panelene inn i et nytt panel med vertikal BoxLayout. Det å bygge opp et kompleks gui kun med bruk av standard swing-biblioteker kan være et sår i bakenden, men når man får det til er det litt artig.

 

De to vinduene under ble laget kun med standard swing-kode, og jeg er egentlig relativt fornøyd med hvordan de ble seende ut. de ser riktignok ikke helt like bra ut uten innhold i. Men siden database-serveren applikasjonen brukte er nede, er det ikke stort å gjøre med det.

post-51936-0-20053200-1314270879_thumb.png

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...