Ahoj,
potřeboval bych poradit, jak mám přidat scroll do BoxLayout, ale aby se se položky neroztáhly.
Problém je ten, že tam chci mít položky (JPanel, co obsahuje dalsí věci) a tyhle položky musí být vždy 50px vysoký. Pokud nastavím zarovnání na NORTH, tak se sice neroztáhnout podle výšky okna, ale zase se nezobrazí scroll. Pokud NORTH odeberu, tak se zobrazí scroll, ale zase se roztáhnout na výšku okna.
Víc řekne kód... díky za nějaké rady :)
public class JFramer extends JFrame {
private static final long serialVersionUID = 1L;
public JFramer() {
super();
setSize(200, 200);
setLocationRelativeTo(null);
setTitle("JFramer");
setLayout(new BorderLayout(0, 0));
JPanel view = new JPanel();
view.setLayout(new BorderLayout(0, 0));
getContentPane().add(view, BorderLayout.CENTER);
{
JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.PAGE_AXIS));
JScrollPane scroll = new JScrollPane(box);
// • pokud odeberu NORTH, tak se scroll přidá a funguje to, ALE
// položky se roztáhnout, takže pokud tam jsou 2, tak výška
// každé položky je 50% výšky okna a to nechci, chci aby položka
// byla vysoká vždy třeba 50px
// • díky tomu NORTH se položky neroztahují podle okna, ale zase
// se nepřidá scroll...
view.add(scroll, BorderLayout.NORTH);
for (int i = 0; i < 20; i++) {
JPanel panel = createItem(i);
box.add(panel);
}
}
}
private JPanel createItem(int index) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout(0, 0));
{
JButton button1 = new JButton("Button " + index);
panel.add(button1, BorderLayout.WEST);
JButton button2 = new JButton("Button " + index);
panel.add(button2, BorderLayout.EAST);
}
return panel;
}
}
Případně si přidejte metodu do třídy výše na otestování
public static void main(String[] args) {
new JFramer().setVisible(true);
}