webForumDet fria alternativet

BorderLayout...

5 svar · 390 visningar · startad av Blårand

BlårandMedlem sedan jan. 20032 356 inlägg
#1

Har skapat en BordeLayout där jag i North, East, West och Center valt all lägga in diverse olika komponenter som TextField, Labels, RadioButtons, TextArea m.m.

När jag lägger ditt komponeterna så läggs de på en enda lång rad, så att jag måste bredda framen ganska så rejält för att se alla komponenter.

När det nu gäller West, Center och East, skulle jag vilja göra dess till FlowLayout så att komponenterna lägger sig under varandra när de uppnått en viss bredd.
Hur gör jag för att ordna detta, eller finns det möjlighet att bestämma bredden för varje "ruta" i en BorderLayout, så att komponenterna med automatik börjar på en ny rad då de uppnått bredden i en "ruta"?

frontMedlem sedan aug. 2000380 inlägg
#2

Du kan ju lägga till en ny Container med FlowLayout i West, Center och East.

BlårandMedlem sedan jan. 20032 356 inlägg
#3

Hur menar du?

Nedanstående taktik som jag använder, ska jag lägga den på hyllan?

Container con = getContentPane();
con.setLayout(new BorderLayout());

// Skapar fyra stycken paneler som vi ska använda
// Vi kallar dem för P_North, P_West, P_Center och P_East
JPanel P_North = new JPanel();
JPanel P_West = new JPanel();
JPanel P_Center = new JPanel();
JPanel P_East = new JPanel();

P_West.setLayout(new FlowLayout(FlowLayout.LEFT));

// Sätter ut komponenerna för respektive panel
P_North.add(new JLabel("Rubriktext"));
P_North.setBorder(BorderFactory.createLoweredBevelBorder());
P_Center.add(new JButton("Knapp1"));
P_West.add(new JTextField(10));
P_East.add(new JTextArea());

JRadioButton Radio1 = new JRadioButton("Radioknapp1");
JRadioButton Radio2 = new JRadioButton("Radioknapp2");
ButtonGroup RadioGrupp = new ButtonGroup();
RadioGrupp.add(Radio1);
RadioGrupp.add(Radio2);
P_West.add(Radio1);
P_West.add(Radio2);

// Placerar ut panelerna på framen
con.add(P_North,BorderLayout.NORTH);
con.add(P_West,BorderLayout.WEST);
con.add(P_Center,BorderLayout.CENTER);
con.add(P_East,BorderLayout.EAST);
BlårandMedlem sedan jan. 20032 356 inlägg
#4

Om jag vänder på min fundering.

Jag har skapat en BorderLayout som innehåller fem "platser". I platsen som kallas WEST, lägger jag in en JPanel som satts som FlowLayout och som innehåller ett visst antal komponenter.

För att denna FlowLayout ska fungera, så krävs det ju att "WEST" har ett fast mått som inte kan ändras. För kan bredden på "WEST" inte bestämmas, så anpassas bredden efter det antal komponenter som finns i "JPanel FlowLayout", vilket gör att "CENTER" och "EAST" minskar i bredd på bekostnad av att "WEST" ökar.

Kanske blev en plottrik förklaring? Men finns det någon möjlighet att låsa bredden på en ruta i en "BorderLayout"? För då tror jag att det skulle lösa problemet.

LimeMedlem sedan sep. 2001961 inlägg
#5

Testa att sätta preferedSize och setSize på dina JPanels...

Kolla lite på SpringLayout, BoxLayout och GridBagLayout... någon av dessa kanske skulle vara lämpligare...

BlårandMedlem sedan jan. 20032 356 inlägg
#6

Tack för hjälpen! :)
preferedSize rättade upp problemet.

128 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)