Witam!
Napotkałem problem przy tworzeniu GUI programu, z którym nie potrafię sobie poradzić a wygląda on tak:
Buduję GUI w sposób następujący: Najpierw tworzę komponent o nazwie panelGlowny:
JPanel panelGlowny
Następnie ustawiam:
setContentPane(getPanelGlowny())
Ponieważ program ma kilka opcji w menu w zależności od wybranej ukazuję się inny panel, który wrzucam na ten panelGlowny:
panelGlowny.add(komponent);
a poprzedni komponent traktując metodą:
setVisible(false);
Wszystko to działa poprawnie a problem mam gdy chcę dodać w taki sposób panel w suwaku gdyż jest za duży. GUI podzieliłem w ten sposób, że każdy taki komponent zwraca odpowiadająca za to metoda. Dziwi mnie, że działa to co chcę zrobić jeśli suwak zwracam np w JTabbedPane a nie w JPanel i tak to działa:
private JTabbedPane getCos(){
cos = new JTabbedPane();
cos.setLocation(0,0);
cos.setSize(993, 678);
cos.addTab("cos", getCos1());
return cos;
}
private JScrollPane getCos1(){
cos1 = new JPanel();
cos1.setPreferredSize(new Dimension(970, 1150));
cos1.setLayout(null);
cos1.setBackground(Color.red);
suwakAM = new JScrollPane(cos1);
suwakAM.getVerticalScrollBar().setUnitIncrement(20);
return suwakAM;
}
a nie działa to:
private JPanel getCos(){
cos = new JPanel();
cos.setLayout(null);
cos.setLocation(0,0);
cos.setSize(993, 678);
cos.add(getCos1());
return cos;
}
private JScrollPane getCos1(){
cos1 = new JPanel();
cos1.setPreferredSize(new Dimension(970, 1150));
cos1.setLayout(null);
cos1.setBackground(Color.red);
suwakAM = new JScrollPane(cos1);
suwakAM.getVerticalScrollBar().setUnitIncrement(20);
return suwakAM;
}
oba sposoby dodaj jak pisałem tak:
komponent = getCos();
panelGlowny.add(komponent);
Mówiąc nie działa mam na myśli panel jest wyświetlany ale bez suwaka?
Dlaczego?
Może dlatego, że wszystko robię bez Layoutu, ustawiam:
setLayout(null);
a potem wszystko ustawiam jak chcę poprzez setSize() i setLocation.
Ale nie rozumiem tego nie działa coś co według mnie jest intuicyjne skoro działa prze JTabbedPane.
Jeśli ktoś dotarł aż tu do końca mojego wywodu to dzięki i liczę na pomoc.