Permalänk

JAVA JPanel hjälp

Hej

Jag håller på att få ett frispel på den här enkla uppgiften.

Jag vill skapa en ljusgrå JPanel som skall ligga i botten på mitt fönster. Där jag skall ha två knappar.
Mitt fönster deklareras också i konstruktorn.

Jag har försökt med följande:

p är min JPanel.

min konstruktor {
setLayout(new FlowLayout());
setVisible(true);
setSize(700,700);
getContentPane().setBackground(Color.blue);
p.setBackground(Color.gray);
nytt.addActionListener(this);

p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));

p.add(new p);
p.setOpaque(true);
add(p, nytt);//Knapp
p.setAlignmentY(BOTTOM_ALIGNMENT);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

i main skapar jag bara objektet.

Problemet är att min JPanel bara blir min knapp(nytt) som ligger centrerad i fönstret.

Permalänk
Medlem

du verkar ju använda några olika layoutmanagers redan, läs om dem på (fd) suns tutorial...

Permalänk
Skrivet av zappox:

du verkar ju använda några olika layoutmanagers redan, läs om dem på (fd) suns tutorial...

jag har testat allt jag har hittat men inte hittat något kommando för att säga till exakt var någon komponent skall befinna sig.
Det finns ju något som heter .setAlignmentX(LEFT_ALIGNMENT); respektive Y(BOTTOM_ALIGNMENT); men mina komponenter rör sig inte utan ligger kvar i center.

Permalänk

container.add(JPanel, BorderLayout.SOUTH); ?

Permalänk
Medlem
Skrivet av AndreaPirlo_:

Jag har försökt med följande:

p är min JPanel.

min konstruktor {
setLayout(new FlowLayout());
setVisible(true);
setSize(700,700);
getContentPane().setBackground(Color.blue);
p.setBackground(Color.gray);
nytt.addActionListener(this);

p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));

p.add(new p);
p.setOpaque(true);
add(p, nytt);//Knapp
p.setAlignmentY(BOTTOM_ALIGNMENT);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

Ändra add(p, nytt) till add(p, BorderLayout.South. Ta bort setLayout(new FlowLayout()); och p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));.

Med detta får jag JButton nytt placerad i mitten (BorderLayout.CENTER) inuti JPanel p som är placerad längst ner i fönstret (BorderLayout.SOUTH).

Förändringen ser alltså ut så här:

JPanel p = new JPanel(); JButton nytt = new JButton("Nytt"); public AndreaPirlo(){ setVisible(true); setSize(700,700); getContentPane().setBackground(Color.blue); p.setBackground(Color.gray); nytt.addActionListener(this); p.add(nytt); p.setOpaque(true); add(p, BorderLayout.SOUTH);//Knapp p.setAlignmentY(BOTTOM_ALIGNMENT); setDefaultCloseOperation(EXIT_ON_CLOSE); }

Permalänk

stort tack för hjälpen och din tid Chigurh.