Gå til innhold

LostOblivion's nybegynnerspørsmål om Java


Anbefalte innlegg

Hei,

 

Tenkte jeg plasserer spørsmåla mine her i stedet for å spamme forumet helt. Greit for andre nybegynnere i Java som kanskje lurer på de samme tingene også... :hmm:

 

---

 

Nå for spørsmålet.

 

Hvis man lager en JFrame og gir den en viss dimensjon høyde og bredde med setSize, så vil dette være hele programmets vindu og ikke selve "arbeidsvinduet" hvis du skjønner hva jeg mener. Det jeg kunne tenke meg er at man definerer dimensjonen til content pane og ikke selve JFrame.

 

For sånn som det er nå, måtte jeg finne ut (ved tegneprogram) nøyaktig hvor mange piksler bred og høy UIen tilsammen tar i mitt XP-oppsett og legge det til bredden og høyden på selve brettet (JPanel) inni JFrame.

 

Dette er en snarvei som er helt idiotisk, så jeg spør om noen vet hvordan man setter bredden og høyden på content pane og ikke hele framen og lar bredden og høyden på JFrame definieres automatisk ut fra dette? Går det an? :thumbup:

Lenke til kommentar
Videoannonse
Annonse

Jeg er ikke helt sikker, men jeg tror at du kan bruke en metode som heter resize(). Sitter på skolen og har ikke editoren tilgjengelig slik at jeg kan teste dette, men prøv dette:

 

Container c = JFrame.getContentPane();
c.resize(x, y);

 

Som sagt, aner ikke om det fungerer :roll:

Lenke til kommentar

Forsøk følgende:

int height = 800
int width = 600;
JFrame frame = new JFrame();

//Setter din ønskede størrelse:
frame.getContentPane().setPreferredSize(new Dimension(width,height);
frame.getContentPane().setMinimumSize(new Dimension(width,height);

// "Pakker" framen ned, slik at alle indre komponenter 
// har sin ønskede eller minste størrelse
frame.pack();

// Brukeren har ikke muligheten til å endre størrelsen
frame.setRezisable(false);

Lenke til kommentar

Tata. Nytt spørsmål. Laget litt UI til simulatoren min og dere skjønner kanskje hva jeg trenger hjelp til ved å se på den.

 

Simulator

 

JEG TRENGER EN TUTORIAL PÅ HVORDAN Å LAGE GOD UI I JAVA!

 

Herregud, ser ut som en fotballbar i Irland etter EM. :wallbash:

 

En ting til... Hvorfor funker ikke JChoice hos meg? :cry:

 

bug2.jpg

 

Enda en ting. Hvordan finner jeg høyden og bredden på forskjellige JPanels (inkl underobjekter) så jeg kan beregne BorderLayout.CENTERs bredde og høyde...?

 

TAKK!

Endret av LostOblivion
Lenke til kommentar

Hei igjen. Begynner å få hengen på Java litt. Omgjorde prosjektet mitt litt. Gjorde tilbake til en app og ikke applet... :thumbup:

 

Sjekk her for kildekode. Compiler og kjør. :w00t:

 

Trenger hjelp til følgende: :hrm:

 

1.) Jeg ville gjerne hatt knapper og sånt til størrelsen de ville fått i en FlowLayout manager, men når jeg bruker f eks GridLayout til å plassere alle i én kolonne på siden i kontrollpanelet, blir alle sub JPanels like store--men knapper ol inni disse blir maltraktert til absurde størrelser. Hvordan fikser jeg de sånn at de tar seg til normale størrelser OG får dem i én kolonne?

 

2.) Når jeg skal gjøre denne om til en applet for å gjøre den mer tilgjengelig, hvordan finner jeg ut av den nøyaktige størrelsen Swing har satt på controllPanel? Jeg mener, i en app kan jeg bare bruke pack() til å få plass til alle komponenter, men dette går ikke i en JApplet, så da må jeg vite hvor stor plass controllPanel tar så jeg kan kompansere med å forandre størrelsen til selve tegneområdet--drawingBoard...

 

På forhånd takk til dere Javaguruer som alltid er greie og hjelper. :blush::w00t:

Lenke til kommentar

1) Du trenger GridBagLayout, eksempel:

  JPanel lPanel = new JPanel(new GridBagLayout());
 GridBagConstraints constraint = new GridBagConstraints();
 // Setter anchor til komponentene (andre er CENTER,NORTH,SOUTH,EAST)
 constraint.anchor = GridBagConstraints.WEST;
 
 // Ingen fill (alternativt, VERTICAL,HORIZONTAL,BOTH)
 constraint.fill = GridBagConstraints.NONE;
 
 // Grid størrelsen
 constraint.gridheight = 1;
 constraint.gridwidth = 1;
 
 // Tre knapper i samme rekke
 constraint.gridx = 0;
 constraint.gridy = 0;  
 lPanel.add(new JButton("Row0"),constraint);
 
 constraint.gridy = 1;
 lPanel.add(new JButton("Row1"),constraint);
 
 constraint.gridy = 2;
 lPanel.add(new JButton("Row2"),constraint);
 
 // Fjerde knapp i øverst rekke nr 2
 constraint.gridx = 1;
 constraint.gridy = 0;
 
 // Tar opp to rader og får lov til å fylle opp radene
 constraint.gridheight = 2;
 constraint.fill = GridBagConstraints.VERTICAL;
 lPanel.add(new JButton("Row0 + Row1 and Col1"),constraint);
 

Endret av Patton
Lenke til kommentar

Kjempeflott! Takk skal du ha... Lurer på to ting til som jeg ikke helt skjønte noe av hvordan man gjorde. :whistle:

 

1.) Jeg har satt JAppleten min (i browseren) til å være 800x600, og når jeg bruker to panels--ett med buttons og slikt i, og ett hvor jeg skal tegne selve simulasjonen--ved siden av hverandre, blir de aldri høyere enn det som trengs av høyde for å gjøre plass til bare knappene inni controllPanel til venstre. Er litt dumt om jeg må tegne på en 100x500 flate mener jeg... Jeg vil at GridBag skal bruke hele høyden tilgjengelig i en JFrame f eks eller JApplet...

 

2.) Sett at layout-manageren klarer å sette full høyde for et tegneområdet, hvordan får jeg da tak i dimensjonene til denne tegneJPanelen? Kan jo hente direkte fra selve JPanel-objektet gjennom getSize, men denne blir tydeligvis ikke satt av layoutmanageren. Det er nødvendig for programmet at den finner denne dimensjonen for at det skal funke ordentlig. :hmm:

 

Sjekk her for hvordan det ser ut for meg.

 

Haha, masse spørsmål. Takk for all hjelp! :p

 

EDIT: Legg mer vekt på nummer 2.), ettersom jeg tror jeg fant ut av 1.) :w00t:

Endret av LostOblivion
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å
×
×
  • Opprett ny...