/ 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
Problemer med layoutManager
Fra : Poul Christoffersen


Dato : 19-08-01 19:33

Hej gruppe
//kode-eksempel længere nede...

Følgende har faktisk - i forskellige sammenhænge - "plaget" mig igennem
længere tid:

* En Label, en textField og en Button skal anbringes i rækkefølge på et
Panel
* Panelet sættes til FlowLayout
* Panelet anbringes på en applet der sættes til BorderLayout

Meningen er at de 3 komponeneter skal stå på linie, hvis der er plads nok,
ellers vil de automatisk

blive placeret på 2 evt. 3 linier, hvis pladsen bliver mindre (dvs
Browser-vinduet gøres mindre).

Problemet er nu flg.:

* Placeres Panelet (med de 3 komponenter) i applettens CENTER, virker det
hele bare helt perfekt.
* Men jeg skal også kunne placere disse paneler i NORTH, SOUTH osv., og
så går det galt:

komponeneterne omplaceres ikke men skæres af!

Dette er selvfølgelig ikke acceptabelt!

(i eksemplet nedenfor virker det fint med Panel p5 men ikke p3, - prøv selv)

Jeg har på fornemmelsen at det jeg forsøger på slet ikke kan gøres sådan som
jeg beskriver, - men hvad

gør man så?


Venlig hilsen
Poul Christoffersen




// ------------- KODE START--------------------------

import java.io.*;
import java.awt.*;
import java.applet.*;


public class layoutTest extends Applet {
Font f= new Font("TimesRoman",Font.BOLD,16);
Button b1;
Label l1;
TextField input;
Panel p1,p2,p3,p4,p5;

public void init() {
setLayout(new BorderLayout());
p1 = new Panel(new FlowLayout()); p1.setBackground(Color.yellow);
add(p1,BorderLayout.NORTH);
p2 = new Panel(new FlowLayout()); p2.setBackground(Color.red);
add(p2,BorderLayout.SOUTH);
p3 = new Panel(new FlowLayout()); p3.setBackground(Color.green);
add(p3,BorderLayout.EAST);
p4 = new Panel(new FlowLayout()); p4.setBackground(Color.blue);
add(p4,BorderLayout.WEST);
p5 = new Panel(new FlowLayout()); p5.setBackground(Color.lightGray);
add(p5,BorderLayout.CENTER);

input = new TextField("InputFelt",6);
b1 = new Button("Knap 1");
l1 = new Label("Dette er en label");

/* prøv at skifte mellem p3 og p5 */

// p5.add(l1); p5.add(input); p5.add(b1);
p3.add(l1); p3.add(input); p3.add(b1);
}


public void paint(Graphics g) {
g.setFont(f);
g.setColor(Color.blue);
g.drawString("Test grafisk Panel",100,35);
}
}


// ------------- KODE SLUT--------------------------




 
 
The MaXx (19-08-2001)
Kommentar
Fra : The MaXx


Dato : 19-08-01 22:05

> * Placeres Panelet (med de 3 komponenter) i applettens CENTER, virker
det
> hele bare helt perfekt.
> * Men jeg skal også kunne placere disse paneler i NORTH, SOUTH osv., og
> så går det galt:

Davs Poul.

Problemet er at BorderLayout er lavet sådan at den resizer CENTER til at
udfylde pladsen der er "til overs" fra de fire andre områder. Mens den vil
prøver at give alt restpladsen til CENTER, begynder den at croppe de andre
områder hvis den ikke har plads nok.
Jeg har ikke lige nogen ideer til dig om hvordan du løser det, men det kan
være du kan komme lidt videre med det nu....

The MaXx



Poul Christoffersen (20-08-2001)
Kommentar
Fra : Poul Christoffersen


Dato : 20-08-01 06:42

Hej

The MaXx skrev:
> Jeg har ikke lige nogen ideer til dig om hvordan du løser det, men det kan
> være du kan komme lidt videre med det nu....
>

Ja, for nu behøver jeg jo ikke at spilde mere tid på at finde en løsning af
den vej som jeg beskrev i mit første brev, - så:

- mange tak for svaret.

Jeg hører stadig gerne fra nogle, der måtte have en løsning til dette -
egentlig ret generelle - layoutproblem.

Venlig hilsen
Poul Christoffersen.




Filip Larsen (20-08-2001)
Kommentar
Fra : Filip Larsen


Dato : 20-08-01 07:38

Poul Christoffersen skrev

> Jeg hører stadig gerne fra nogle, der måtte have en løsning til dette -
> egentlig ret generelle - layoutproblem.

Måske du kan bruge en GridBagLayout til at "simulere" en BorderLayout uden
klipning?


Mvh,
--
Filip Larsen <filip.larsen@mail.dk>



Ulrik Magnusson (20-08-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 20-08-01 18:39



Poul Christoffersen wrote:

> * En Label, en textField og en Button skal anbringes i rækkefølge på et
> Panel
> * Panelet sættes til FlowLayout
> * Panelet anbringes på en applet der sættes til BorderLayout
>
> Meningen er at de 3 komponeneter skal stå på linie, hvis der er plads nok,
> ellers vil de automatisk
> blive placeret på 2 evt. 3 linier, hvis pladsen bliver mindre (dvs
> Browser-vinduet gøres mindre).

Følgende er hentet fra dokumentationen til java.awt.BorderLayout i
JDK 1.2.2:

"The components are laid out according to their preferred sizes and
the constraints of the container's size. The NORTH and SOUTH
components may be stretched horizontally; the EAST and WEST
components may be stretched vertically; the CENTER component
may stretch both horizontally and vertically to fill any space left over. "

Som jeg læser ovenstående kan EAST og WEST ikke kan 'strækkes'
(eller sammentrækkes) horisontalt og deres bredde er derfor statisk.
Jeg har ikke umiddelbart noget pænt bud på en løsning..

Ulrik Magnusson


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste