/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
GUI
Fra : Jacob Jensen


Dato : 12-07-05 15:35

Hej

Nu har jeg kigget lidt på GUI-programmering i Java med AWT. Jeg har leget
lidt med borderlayouts og frames og panels og buttons og sådan (også
gridbaglayout men det fik jeg ikke helt til at ville som jeg vil).

Mit mål er at ende op med et layout som overordnet består af to dele (en til
venstre og en til højre). Til at starte med er det helt i orden at de har
konstant størrelse og at vinduet ikke skal kunne resizes. Den venstre del
til fylde mere end den højre. Delen til højre skal fungere som menu- og
statussted. Her skal det være muligt at placere knapper og tekst rundt
omkring. I delen til venstre skal det være muligt at tegne streger og
cirkler og bitmaps osv. helt frit.

Umiddelbart synes jeg det hele virker lidt mere besværligt i Java end i C++
(har kun prøvet at bruge windows' API), men det er sikkert fordi jeg overser
noget. Jeg savner mere frihed.

Jeg har kigget på en del tutorials, men de fleste når ikke længere end til
at vise en frame som indeholder et panel og en knap og måske lidt labels.

Er der nogle som kender gode tutorials, eller som kan henvise til
eksempelprogrammer - måske bare noget hvor man kan flytte en dims rundt på
skærmen med musen eller noget. Det ville være meget givende?

Jacob



 
 
Thomas Bendsen (13-07-2005)
Kommentar
Fra : Thomas Bendsen


Dato : 13-07-05 20:40

Jacob Jensen wrote:
> Hej
>
> Nu har jeg kigget lidt på GUI-programmering i Java med AWT. Jeg har leget
> lidt med borderlayouts og frames og panels og buttons og sådan (også
> gridbaglayout men det fik jeg ikke helt til at ville som jeg vil).

> Er der nogle som kender gode tutorials, eller som kan henvise til
> eksempelprogrammer - måske bare noget hvor man kan flytte en dims rundt på
> skærmen med musen eller noget. Det ville være meget givende?
>
> Jacob
>
>

Hej Jakob

For det første skal du gå over til Swing som bygger oven på AWT (med
mindre det skal kunne køre under gamle javainstallationer).
For det andet er der en temmeligt grundig tutorial her:
http://java.sun.com/docs/books/tutorial/uiswing/index.html

Med venlig hilsen
Thomas Bendsen

Jacob Jensen (14-07-2005)
Kommentar
Fra : Jacob Jensen


Dato : 14-07-05 11:04

> For det første skal du gå over til Swing som bygger oven på AWT (med
> mindre det skal kunne køre under gamle javainstallationer).

Hvad giver swing mulighed for som AWT ikke gør? Hvad er forskellen?

> For det andet er der en temmeligt grundig tutorial her:
> http://java.sun.com/docs/books/tutorial/uiswing/index.html

Tak, det var vist en af dem jeg havde set på, men ikke grundigt fordi jeg
regnede med at bruge AWT.

Jacob



Thomas Bendsen (14-07-2005)
Kommentar
Fra : Thomas Bendsen


Dato : 14-07-05 12:54

Jacob Jensen wrote:
>>For det første skal du gå over til Swing som bygger oven på AWT (med
>>mindre det skal kunne køre under gamle javainstallationer).
>
>
> Hvad giver swing mulighed for som AWT ikke gør? Hvad er forskellen?
>
>
Jeg er langt fra at være ekspert på området, men groft sagt er Swing
vist nemmere at bruge. Jeg tror også at der findes flere forskellige
foruddefinerede klasser, som nemt løser (næsten) alle de opgaver du kan
komme ud for. Der er flere og mere grundlæggende fordele men det vil jeg
trygt overlade til andre at beskrive.

Med venlig hilsen
Thomas

Jacob Jensen (30-07-2005)
Kommentar
Fra : Jacob Jensen


Dato : 30-07-05 10:11

> Hvad giver swing mulighed for som AWT ikke gør? Hvad er forskellen?

Nu har jeg læst lidt på AWT og undrer mig meget over en ting ang. de her
layout managers. Er det helt umuligt selv at bestemme hvor man vil have
placeret sine komponenter (f.eks. angivet i pixel)? Kan man det i swing?

Jacob



Thorbjoern Ravn Ande~ (30-07-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 30-07-05 11:28

"Jacob Jensen" <omo@adslhome.dk> writes:

> Nu har jeg læst lidt på AWT og undrer mig meget over en ting ang. de her
> layout managers. Er det helt umuligt selv at bestemme hvor man vil have
> placeret sine komponenter (f.eks. angivet i pixel)? Kan man det i swing?

Du kan køre uden layout manager, men så skal du selv layoute det
hele. Det er ikke ubetinget nogen fornøjelse, da du skal tage hensyn
til platforms- og brugerdefineret forskelle.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

Filip Larsen (30-07-2005)
Kommentar
Fra : Filip Larsen


Dato : 30-07-05 11:33

Jacob Jensen skrev

> Nu har jeg læst lidt på AWT og undrer mig meget over en ting ang. de
her
> layout managers. Er det helt umuligt selv at bestemme hvor man vil
have
> placeret sine komponenter (f.eks. angivet i pixel)?

Hvis en Container ikke har en LayoutManager sat
(Container.setLayout(null)) så vil de Component'er den indeholder bevare
deres størrelse og placering. Dette kaldes også for "null-layout" og kan
være nyttigt i nogle få specielle situationer.

Normalt vil det altid være en fordel at benytte en LayoutManager, så man
bør kun vælge null-layout i de tilfælde hvor det rent faktisk er den
bedste løsning. Jeg kan her bemærke, at efter 5 år med Java og et utal
af applikationer har jeg *aldrig* haft brug for null-layout.

Hvis man har lyst til at vælge null-layout fordi man tror "det er
nemmere" eller fordi "Java layout er sort magi", så kan det kraftig
anbefales, at man bruger nogle minutter på at forstå hvilke muligheder
for layout der er i Swing, fx ved at læse tutorials som

http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html


Mvh,
--
Filip Larsen



Jacob Jensen (07-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 07-08-05 10:16

> Normalt vil det altid være en fordel at benytte en LayoutManager, så man
> bør kun vælge null-layout i de tilfælde hvor det rent faktisk er den
> bedste løsning. Jeg kan her bemærke, at efter 5 år med Java og et utal
> af applikationer har jeg *aldrig* haft brug for null-layout.

Nu har jeg forsøgt lidt af hvert synes jeg efterhånden. Hvordan i alverden
har du undgået at Java sizer dine komponenter sådan at f.eks. dit canvas får
en uønsket størrelse?

Jeg synes det jeg forsøger her er meget simpelt, og selv ikke det kan jeg få
til at du. Følgende virker f.eks. ikke. Java er fuldkommen ligeglad med de
værdier jeg giver canvas'et og panelet. Filip Larsen skriver følgende, men
det kan jeg ikke få til at stemme: "For eksempel vil BorderLayout være
ligeglad med disse værdier for center-komponenten (den komponent der har
constraint BorderLayout.CENTER), mens den bruger dele af disse værdier for
de andre
komponenterne (fx. bredde for EAST og WEST komponenter)."

class MyFrame extends Frame
{
MyFrame()
{
super("This is a test");

final int PanelxSize = 200;
final int CanvasSize = 400;
setSize(CanvasSize+PanelxSize,CanvasSize+30);
setResizable(false);

Canvas TheGameCanvas = new GameCanvas();
TheGameCanvas.setPreferredSize(new Dimension(CanvasSize, CanvasSize));
TheGameCanvas.setMaximumSize(new Dimension(CanvasSize, CanvasSize));
TheGameCanvas.setMinimumSize(new Dimension(CanvasSize, CanvasSize));
add(new GameCanvas(), BorderLayout.CENTER);

Panel TheMenuPanel = new MenuPanel();
TheMenuPanel.setPreferredSize(new Dimension(PanelxSize, CanvasSize));
TheMenuPanel.setMaximumSize(new Dimension(PanelxSize, CanvasSize));
TheMenuPanel.setMinimumSize(new Dimension(PanelxSize, CanvasSize));
add(new MenuPanel(), BorderLayout.EAST);

addWindowListener(new MyListener());
}
}

Jacob



Jacob Jensen (07-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 07-08-05 10:58

> Hvis en Container ikke har en LayoutManager sat
> (Container.setLayout(null)) så vil de Component'er den indeholder bevare
> deres størrelse og placering. Dette kaldes også for "null-layout" og kan
> være nyttigt i nogle få specielle situationer.

Efter jeg nu fik det til at gøre som jeg ville med BorderLayout ville jeg
lige forsøge setLayout(null), men det ser ud til at jeg kun kan kalde add()
en enkelt gang, og alle kald derefter har ingen effekt. Der kan altså kun
være en komponent i min container. Er det korrekt?

Jacob



Janus (07-08-2005)
Kommentar
Fra : Janus


Dato : 07-08-05 11:21

Jacob Jensen wrote:
>>Hvis en Container ikke har en LayoutManager sat
>>(Container.setLayout(null)) så vil de Component'er den indeholder bevare
>>deres størrelse og placering. Dette kaldes også for "null-layout" og kan
>>være nyttigt i nogle få specielle situationer.
>
>
> Efter jeg nu fik det til at gøre som jeg ville med BorderLayout ville jeg
> lige forsøge setLayout(null), men det ser ud til at jeg kun kan kalde add()
> en enkelt gang, og alle kald derefter har ingen effekt. Der kan altså kun
> være en komponent i min container. Er det korrekt?
>
> Jacob
>
>

Du kan ikke bare ændre til null-layout i din kode med BorderLayout og
forvente det virker.

JPanel p = new JPanel();
JTextArea a = new JTextArea();
JButton b1 = new JButton("Ok");
JButton b2 = new JButton("Cancel");

p.add(a);
a.setBounds(10,10,380,380);
p.add(b1);
b1.setBounds(400,10,50,10);
p.add(b2);
b2.setBounds(400,25,50,10);


JFrame f = new JFrame();
f.getContentPane().add(p);
f.setSize(460,400);
f.pack(); // kan ikke huske om man behøver pack'e med null layout
f.setVisible(true);

Hej fra Janus

--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Jacob Jensen (07-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 07-08-05 11:57

> Du kan ikke bare ændre til null-layout i din kode med BorderLayout og
> forvente det virker.

Nej, jeg brugte også setBounds. Mystisk. Må lige prøve igen på et tidspunkt.

Jacob



Jacob Jensen (07-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 07-08-05 12:01

> JPanel p = new JPanel();
> JTextArea a = new JTextArea();
> JButton b1 = new JButton("Ok");
> JButton b2 = new JButton("Cancel");
>
> p.add(a);
> a.setBounds(10,10,380,380);
> p.add(b1);
> b1.setBounds(400,10,50,10);
> p.add(b2);
> b2.setBounds(400,25,50,10);
>
>
> JFrame f = new JFrame();
> f.getContentPane().add(p);
> f.setSize(460,400);
> f.pack(); // kan ikke huske om man behøver pack'e med null layout
> f.setVisible(true);

Du mangler lige en setLayout(null) ikke?

Jacob



Janus (07-08-2005)
Kommentar
Fra : Janus


Dato : 07-08-05 23:58

Jacob Jensen wrote:

>
> Du mangler lige en setLayout(null) ikke?
>
> Jacob
>

Nu har jeg så ikke lige mulighed for at afprøve min kode for tiden, men
jeg vil nok påstå, at jo, det gør jeg. Det er FlowLayout der er default,
så vidt jeg husker.

/janus


--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Janus (30-07-2005)
Kommentar
Fra : Janus


Dato : 30-07-05 13:51

Jacob Jensen wrote:
>>Hvad giver swing mulighed for som AWT ikke gør? Hvad er forskellen?
>
>
> Nu har jeg læst lidt på AWT og undrer mig meget over en ting ang. de her
> layout managers. Er det helt umuligt selv at bestemme hvor man vil have
> placeret sine komponenter (f.eks. angivet i pixel)? Kan man det i swing?
>
> Jacob
>
>

Layout Mananging kan være lidt langhåret. Ikke så meget at programmere,
men at definere. Med definere skal forstås hvorledes man kan bruge de
muligheder der er i Layout Managing for at opnå det ønskede resultat.
Et rigtig godt råd er, at du leger lidt med Layout Managers, finder ud
af, hvad de kan. Når du så skal lave din GUI, tegner du den på et stykke
papir først og inddeler den i områder, der hver især let kan defineres
med en Layout Manager. Man skal altid huske på, at det jo er Containers
man giver en Layout Manager og at man derfor kan add'e Containers til
Containers for at opnå det man ønsker.

Personligt er jeg stor tilhænger af at blande BorderLayout med
GridBagLayout, det giver en herlig fleksibilitet.
Selvom jeg vælger at brugeren ikke skal kunne resize vinduet jeg smider
komponenter på, bruger jeg ikke Null Layout. Det tager for lang tid at
gøre pænt og ændringer i din GUI kan være et helvede.


Mange hilsener fra Janus


--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Jacob Jensen (30-07-2005)
Kommentar
Fra : Jacob Jensen


Dato : 30-07-05 21:08

Det her er sådan set et svar på thorbjoern, filip og janus' svar på mit
indlæg, men da jeg ikke ved hvilken af beskederne det er mest
hensigtsmæssigt at svare på vælger jeg at svare mig selv. Indlægget her kan
sådan set også ses som en uddybning af det layout jeg ønsker.

Jeg ikke ikke kigget på swing endnu... Simpelthen fordi jeg mener at det MÅ
kunne lade sig gøre at få følgende meget simple layout frem i AWT (Det er
tegnet med ASCII). Hvordan gør man? Venstre del skal nok bare være et canvas
og højre del skal kunne indeholde knapper og tekst og ligende.

_____________________
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
|_______________|_____|

Jacob



Janus (30-07-2005)
Kommentar
Fra : Janus


Dato : 30-07-05 21:41

Jacob Jensen wrote:
> Det her er sådan set et svar på thorbjoern, filip og janus' svar på mit
> indlæg, men da jeg ikke ved hvilken af beskederne det er mest
> hensigtsmæssigt at svare på vælger jeg at svare mig selv. Indlægget her kan
> sådan set også ses som en uddybning af det layout jeg ønsker.
>
> Jeg ikke ikke kigget på swing endnu... Simpelthen fordi jeg mener at det MÅ
> kunne lade sig gøre at få følgende meget simple layout frem i AWT (Det er
> tegnet med ASCII). Hvordan gør man? Venstre del skal nok bare være et canvas
> og højre del skal kunne indeholde knapper og tekst og ligende.
>
> _____________________
> | | |
> | | |
> | | |
> | | |
> | | |
> | | |
> | | |
> | | |
> |_______________|_____|
>
> Jacob
>
>

Du bruger BorderLayout og GridBagLayout (ikke testet kode, lige fra
hovedet af):

JPanel mainPanel = new JPanel(new BorderLayout());
JPanel centerPanel = new JPanel();
JPanel rightPanel = new JPanel(new GridBagLayout());

JButton button1 = new JButton("test1");
JButton button2 = new JButton("test2");
JTextField field = new JTextField(20, 5);

GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
rightPanel.add(button1, c);

c.gridx = 0;
c.gridy = 1;
rightPanel.add(button2, c);

leftPanel.add(field);

mainPanel.add(centerPanel, BorderLayout.CENTER);
mainPanel.add(rightPanel, BorderLayout.EAST);

JFrame frame = new JFrame("Testing Layout Managers");

frame.getContentPane().add(mainPanel);

frame.setPreferredSize(300,300);
frame.setVisible(true);

Grunden til jeg bruger Swing er, at det er pænere. Du kan bare lave
objekterne om til AWT, da det jo er Layout Managerne der er det
interessante i dette eksempel.

Vh Janus



--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Thorbjoern Ravn Ande~ (30-07-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 30-07-05 22:41

Janus <nospam@nomail.com> writes:

> > AWT (Det er tegnet med ASCII). Hvordan gør man? Venstre del skal nok
> > bare være et canvas og højre del skal kunne indeholde knapper og
> > tekst og ligende.

Jeg forstår ikke hvorfor det skal være i AWT med mindre du ønsker at
lave en IE-applet.

Der er en glimrende introduktion til Swing (som er den anbefalede vej
at gå) i Sun's javaindførsel. Søg efter "java tutorial".

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

Jacob Jensen (31-07-2005)
Kommentar
Fra : Jacob Jensen


Dato : 31-07-05 10:17

> Jeg forstår ikke hvorfor det skal være i AWT med mindre du ønsker at
> lave en IE-applet.

Det er nok mest for nysgerrighedens skyld lige nu. Swing bygger jo på AWT
ikke? Så synes jeg det er meget rart at kende AWT.

Jacob



Thorbjoern Ravn Ande~ (31-07-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 31-07-05 16:37

"Jacob Jensen" <omo@adslhome.dk> writes:

> Det er nok mest for nysgerrighedens skyld lige nu. Swing bygger jo på AWT
> ikke? Så synes jeg det er meget rart at kende AWT.

Det behøves nu ikke.

Du må jo selv om hvor stor en portion du kunne tænke dig - der er jo
ingen af os der ved hvor hurtigt du bliver mæt.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

Jacob Jensen (31-07-2005)
Kommentar
Fra : Jacob Jensen


Dato : 31-07-05 10:35

> Du bruger BorderLayout og GridBagLayout (ikke testet kode, lige fra
> hovedet af):

Tak, efter lidt modifikationer (1) virker det. Mit problem er bare at jeg
gerne vil bestemme hvor meget din rightpanel og centerpanel fylder. Helt
konkret skal den tilpasses sådan at din centerpanel er kvadratisk.

(1) - Jeg har bytett setPrefferedSize ud med setSize. setPrefferedSize
tager vist en "dimension". JTextField har ikke en contructor som tager to
int's, så her har jeg givet den en streng.

Jacob



Janus (31-07-2005)
Kommentar
Fra : Janus


Dato : 31-07-05 11:20

Jacob Jensen wrote:
>>Du bruger BorderLayout og GridBagLayout (ikke testet kode, lige fra
>>hovedet af):
>
>
> Tak, efter lidt modifikationer (1) virker det. Mit problem er bare at jeg
> gerne vil bestemme hvor meget din rightpanel og centerpanel fylder. Helt
> konkret skal den tilpasses sådan at din centerpanel er kvadratisk.
>
> (1) - Jeg har bytett setPrefferedSize ud med setSize. setPrefferedSize
> tager vist en "dimension". JTextField har ikke en contructor som tager to
> int's, så her har jeg givet den en streng.
>
> Jacob
>
>
Nåja, det var fordi det var JTextArea jeg havde i tankerne :)

Og med hensyn til dit spørgsmål om at begå dig i AWT først:
Swing bygger på AWT, så hvis du lærer Swing, lærer du også AWT. Man kan
vel sammenligne det med at sætte sig grundigt ind i Word 97 for at lære
det basale i programtypen at kende, selvom Word 2003 er det nyeste, mest
funktionelle og rareste at bruge (dette er bare et eksempel, siger ikke
det er real life eksempel :)).

Mange hilsener fra Janus

--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Janus (31-07-2005)
Kommentar
Fra : Janus


Dato : 31-07-05 11:36

Jacob Jensen wrote:
>Mit problem er bare at jeg
> gerne vil bestemme hvor meget din rightpanel og centerpanel fylder. Helt
> konkret skal den tilpasses sådan at din centerpanel er kvadratisk.
>

En af ideerne med Layout Managning er, at du ikke selv skal tænke på
resizing behaviour. Panelernes størrelse er afhængig af, hvordan
komponenterne bliver lagt ud.
Hvad mener du med, at center skal være kvadratisk? At dit canvas får en
initiel størrelse og derefter ikke skal strække sig efter vinduets
størrelse? Eller mener du, at når vinduet bliver strukket, skal
canvas'et følge størrelsen, dog begrænset af

int minSize = Math.min(panel.getHeight(), panel.getWidth());
panel.setPreferredSize(minSize, minSize);
?

/janus

--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Jacob Jensen (01-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 01-08-05 16:08

> En af ideerne med Layout Managning er, at du ikke selv skal tænke på
> resizing behaviour. Panelernes størrelse er afhængig af, hvordan
> komponenterne bliver lagt ud.

ok. Hvis jeg selv vil bestemme skal jeg altså kalde setLayout(null)?

> Hvad mener du med, at center skal være kvadratisk?

Faktisk skal vinduet nok slet ikke kunne trækkes :) Jeg forestiller mig at
højre panel skal have en fast bredde, og centerpanel skal være kvadratisk.
Hvis det skal være muligt at trække vinduet, er det vigtigt at center panel
er kvadratisk men størrelsen af det er ikke så vigtigt.

Jacob



Janus (04-08-2005)
Kommentar
Fra : Janus


Dato : 04-08-05 17:27

Jacob Jensen wrote:
>>En af ideerne med Layout Managning er, at du ikke selv skal tænke på
>>resizing behaviour. Panelernes størrelse er afhængig af, hvordan
>>komponenterne bliver lagt ud.
>
>
> ok. Hvis jeg selv vil bestemme skal jeg altså kalde setLayout(null)?
>
>
>>Hvad mener du med, at center skal være kvadratisk?
>
>
> Faktisk skal vinduet nok slet ikke kunne trækkes :) Jeg forestiller mig at
> højre panel skal have en fast bredde, og centerpanel skal være kvadratisk.
> Hvis det skal være muligt at trække vinduet, er det vigtigt at center panel
> er kvadratisk men størrelsen af det er ikke så vigtigt.
>
> Jacob
>
>

Null-layout er generelt en dårlig idé.. du finder ud af det hurtigt,
hvis du midt i udviklingsprocessen skal flytte lidt på nogle knapper,
ændre på teksten derpå, således at den overskrider knappens bredde osv
osv osv. Problemerne kan stige eksponentielt.
Gør hellere noget i stil med:

final int xySize = 400;

JPanel paintPanel = new JPanel();
JPanel buttonPanel = new JPanel(new GridbagLayout());

paintPanel.setPreferredSize(new Dimension(xySize, xySize));

JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(paintPanel, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.EAST);

[bla bla bla]

mainPanel.setResizeable(false); // ta daa!


Endnu engang kode fra hovedet, "Discalimer: could be error prone"

Vh Janus

--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Jacob Jensen (04-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 04-08-05 20:57

> Null-layout er generelt en dårlig idé.. du finder ud af det hurtigt,

Det svarer vel til at lave noget i c++ til windows eller noget i den retning
ikke?

> Gør hellere noget i stil med:

<klip>

Lyder meget fornuftigt, men jeg kan så ikke bestemme størrelsen på
buttonpanel? Det forekommer mig altså lidt underligt det her java (det er
første gang jeg laver GUI i java).

Det begynder så småt at irritere mig lidt, og jeg skulle helst have det
klart inden alt for længe :)

Tak for al hjælpen indtil nu.

Jacob



Janus (04-08-2005)
Kommentar
Fra : Janus


Dato : 04-08-05 22:53

Jacob Jensen wrote:
>>Null-layout er generelt en dårlig idé.. du finder ud af det hurtigt,
>
>
> Det svarer vel til at lave noget i c++ til windows eller noget i den retning
> ikke?
>
>
>>Gør hellere noget i stil med:
>
>
> <klip>
>
> Lyder meget fornuftigt, men jeg kan så ikke bestemme størrelsen på
> buttonpanel? Det forekommer mig altså lidt underligt det her java (det er
> første gang jeg laver GUI i java).
>
> Det begynder så småt at irritere mig lidt, og jeg skulle helst have det
> klart inden alt for længe :)
>
> Tak for al hjælpen indtil nu.
>
> Jacob
>
>

Jojo, det kan du sagtens, du bestemmer den på samme måde som det andet
panel, eksempelvis: buttonPanel.setPreferredSize(new Dimension(50,
xySize)); Så bliver det 50 pixels bredt og 400 højt. Hvis jeg får tid,
vil jeg prøve at bikse noget mere sammenhængende sammen til dig

Vh Janus

--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Jacob Jensen (05-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 05-08-05 10:22

> Jojo, det kan du sagtens, du bestemmer den på samme måde som det andet
> panel, eksempelvis: buttonPanel.setPreferredSize(new Dimension(50,
> xySize)); Så bliver det 50 pixels bredt og 400 højt. Hvis jeg får tid, vil
> jeg prøve at bikse noget mere sammenhængende sammen til dig

Mit problem er at det jo er en "preferred size". Java er ret ligeglad med
den åbenbart. Hvis Java på en eller anden måde kan få componenterne til at
være der så resizer den bare.

Jeg har fundet ud af at der er en "setMaximumSize"-funktion og en
"setMinimumSize"-funktion, men den er java tilsyneladende også ret ligeglad
med?

Jacob



Filip Larsen (05-08-2005)
Kommentar
Fra : Filip Larsen


Dato : 05-08-05 12:08

Jacob Jensen skrev

> Mit problem er at det jo er en "preferred size". Java er ret ligeglad
med
> den åbenbart. Hvis Java på en eller anden måde kan få componenterne
til at
> være der så resizer den bare.
>
> Jeg har fundet ud af at der er en "setMaximumSize"-funktion og en
> "setMinimumSize"-funktion, men den er java tilsyneladende også ret
ligeglad
> med?

Du er nu flere gange blevet gjort opmærksom på, at Container
underklasser såsom JPanel har tilknyttet en LayoutManager eller
LayoutManager2 underklasse der bestemmer den præcise størrelse og
placering af de enkelte underkomponenter i kontaineren, herunder også
hvilken betydning, om nogen, minimumSize, preferredSize og maximumSize
har for layoutet. For eksempel vil BorderLayout være ligeglad med disse
værdier for center-komponenten (den komponent der har constraint
BorderLayout.CENTER), mens den bruger dele af disse værdier for de andre
komponenterne (fx. bredde for EAST og WEST komponenter).

Hvis dette er sort snak for dig, så kan jeg kun endnu engang opfordre
dig til at få fat i noget læsestof om emnet. GUI design og layout er
under Windows og Java på hver deres måde ret komplekse øvelser så du kan
ikke forvente, at du kan lave brugbare ting uden at have hovedet med. På
begge platforme gælder, at enkle ting er enkle at lave når man følger
standarden, mens specielle ting (såsom kvadratisk layout) kræver en
dybere forståelse af frameworket. Man kan faktisk lave mange ting med
Swing overraskende nemt når man gør det på den "rigtige" måde.


Mvh,
--
Filip Larsen



Thorbjoern Ravn Ande~ (05-08-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 05-08-05 16:21

"Filip Larsen" <filip.larsen@nospam.dk> writes:

> Hvis dette er sort snak for dig, så kan jeg kun endnu engang opfordre
> dig til at få fat i noget læsestof om emnet. GUI design og layout er
> under Windows og Java på hver deres måde ret komplekse øvelser så du kan
> ikke forvente, at du kan lave brugbare ting uden at have hovedet med. På
> begge platforme gælder, at enkle ting er enkle at lave når man følger
> standarden, mens specielle ting (såsom kvadratisk layout) kræver en
> dybere forståelse af frameworket. Man kan faktisk lave mange ting med
> Swing overraskende nemt når man gør det på den "rigtige" måde.

Sun har reklameret en del med at deres nye visuelle editor i Netbeans
skulle være ret skrap til at lave det man gerne vil have.

http://www.netbeans.org/kb/41/flash-matisse.html

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

Janus (05-08-2005)
Kommentar
Fra : Janus


Dato : 05-08-05 17:59

Thorbjoern Ravn Andersen wrote:
>
> Sun har reklameret en del med at deres nye visuelle editor i Netbeans
> skulle være ret skrap til at lave det man gerne vil have.
>
> http://www.netbeans.org/kb/41/flash-matisse.html
>

Ja, det ser pænt svedigt ud. Så er det jo bare, om den editor mon kommer
til Eclipse?
Jeg har prøvet at installere noget fra Eclipse' Plug-in repository, men
plug-in'et manglede et eller andet og så gad jeg ikke kigge mere på det.
Men hvis der findes ækvivalente tools i stil med den ovenstående
præsentation, kunne det da være man skulle forsøge sig en gang til?

Vh Janus


--
Kids, try this at home: http://www.legendsrpg.net/index.php?refid=799

Thorbjoern Ravn Ande~ (05-08-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 05-08-05 18:19

Janus <nospam@nomail.com> writes:

> Ja, det ser pænt svedigt ud. Så er det jo bare, om den editor mon
> kommer til Eclipse?

Næppe. De har deres egen visuelle editor (VE) der kan hentes fra
Software updates.

Den svedige editor er en del af NetBeans.


--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

Jacob Jensen (07-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 07-08-05 10:19

> Du er nu flere gange blevet gjort opmærksom på, at Container
> underklasser såsom JPanel har tilknyttet en LayoutManager eller
> LayoutManager2 underklasse der bestemmer den præcise størrelse og
> placering af de enkelte underkomponenter i kontaineren

Ja

> , herunder også
> hvilken betydning, om nogen, minimumSize, preferredSize og maximumSize
> har for layoutet.

Naaa, først nu :)

> For eksempel vil BorderLayout være ligeglad med disse
> værdier for center-komponenten (den komponent der har constraint
> BorderLayout.CENTER), mens den bruger dele af disse værdier for de andre
> komponenterne (fx. bredde for EAST og WEST komponenter).

Ok, det kan jeg ikke få til at stemme i min kode. Den er fuldkommen ligeglad
med dem både for CENTER, EAST og WEST.

> Hvis dette er sort snak for dig, så kan jeg kun endnu engang opfordre
> dig til at få fat i noget læsestof om emnet. GUI design og layout er
> under Windows og Java på hver deres måde ret komplekse øvelser så du kan
> ikke forvente, at du kan lave brugbare ting uden at have hovedet med. På
> begge platforme gælder, at enkle ting er enkle at lave når man følger
> standarden, mens specielle ting (såsom kvadratisk layout) kræver en
> dybere forståelse af frameworket. Man kan faktisk lave mange ting med
> Swing overraskende nemt når man gør det på den "rigtige" måde.

Jeg er skam i gang. Jeg søgte blot lidt hjælp her, fordi jeg ikke kan få det
til at gøre som jeg vil. Jeg har brugt timer på API-spec'en og jeg er så
småt ved at tykke mig igennem noget om GUI'er i en bog også.

Jacob



Jacob Jensen (07-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 07-08-05 10:49

>> Jojo, det kan du sagtens, du bestemmer den på samme måde som det andet
>> panel, eksempelvis: buttonPanel.setPreferredSize(new Dimension(50,
>> xySize)); Så bliver det 50 pixels bredt og 400 højt. Hvis jeg får tid,
>> vil jeg prøve at bikse noget mere sammenhængende sammen til dig

> Mit problem er at det jo er en "preferred size". Java er ret ligeglad med
> den åbenbart. Hvis Java på en eller anden måde kan få componenterne til at
> være der så resizer den bare.

I går kvajede mig da jeg kodede :) Jeg er kommet til at bruge en forkert
objektreference, da jeg kaldte min frames add()-funktion. Nu ser det ud til
at virke med de kald til setPreferredSize osv.

Tak for hjælpen til jer der har skrevet i denne tråd.

> Jacob



Thomas Bendsen (06-08-2005)
Kommentar
Fra : Thomas Bendsen


Dato : 06-08-05 20:02

Jacob Jensen wrote:
>>Null-layout er generelt en dårlig idé.. du finder ud af det hurtigt,
>
>
> Det svarer vel til at lave noget i c++ til windows eller noget i den retning
> ikke?
>
>
>>Gør hellere noget i stil med:
>
>
> <klip>
>
> Lyder meget fornuftigt, men jeg kan så ikke bestemme størrelsen på
> buttonpanel? Det forekommer mig altså lidt underligt det her java (det er
> første gang jeg laver GUI i java).
>
> Det begynder så småt at irritere mig lidt, og jeg skulle helst have det
> klart inden alt for længe :)
>
> Tak for al hjælpen indtil nu.
>
> Jacob
>
>
Hej Jacob

Prøv eventuelt at kigge lidt på SpringLayout (som godt nok kun findes i
Swing). Det giver ret gode muligheder for direkte at bestemme hvordan
dine komponenter skal se ud.

Med venlig hilsen
Thomas Bendsen

Jacob Jensen (07-08-2005)
Kommentar
Fra : Jacob Jensen


Dato : 07-08-05 10:11

> Prøv eventuelt at kigge lidt på SpringLayout (som godt nok kun findes i
> Swing). Det giver ret gode muligheder for direkte at bestemme hvordan dine
> komponenter skal se ud.

Ok, jeg er lige ved at tykke mig igennem GUI-delen af denne her bog jeg
ligger inde med. Er stadig igang med AWT, men swing kommer bagefter.

Jacob



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste