Zastanawiam się w jaki sposób można stworzyć interfejs graficzny taki, w którym jest np. przycisk "dalej" i przechodzi do kolejnego okna aplikacji, różnej od tej początkowej. Będę wdzięczny za wskazówkę :)
Przygotowujesz zestaw paneli, na każdym umieszczasz elementy (np. przy instalacji: jeden panel z akceptacją regulaminu, drugi z wyborem pliku, trzeci z postępem instalacji itd), zapisujesz je w tablicy JPanel[].
Pod spodem umieszczasz przyciski Wstecz/Dalej które usuwają stary panel i zastępują go następnym/poprzednim wczytanym z tablicy z pamięci
Ja w swoim programie użyłem "jtabbedpane", każdy panel wstawiłem w oddzielnej zakładce.
Jak mój przedmówca zrobiłem butony do przełączania się między panelami,
dodatkowo żeby przyspieszyć przełączanie się między różnymi panelami stworzyłem menu działające reagujące na prawy przycisk myszy.
Pozdrawiam
Dobrym pomysłem jest też ustawienie CardLayout. Tutaj masz tutorial http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html.
Myślę, że już sobie poradzę. Opcja Visher'a jest dla mnie najbardziej odpowiednia. Jeszcze chciałbym prosić o przykład kodu do przycisku Dalej, żebym już nie miał niepotrzebnych zastojów jak zacznę tworzyć interfejs. (na razie kończę projektować grafikę).
Zawsze można użyć gotowej biblioteki do tego.
Jeśli użycie JavaFX Ci nie przeszkadza, to można spróbować tego: http://www.zenjava.com/jfx-flow/
Na razie robię pierwszy ekran, jak coś nie będzie szło to dam znać.
Jeszcze mam takie pytanie: Czy w javie jest możliwość aby nazwa np. JButton składała się tez ze zmiennej, bo tworząc powiedzmy 50 przycisków o nazwie różniącej się tylko liczbą na końcu, to strasznie dużo linijek zajmie. A tak w pętli by się potworzyły. Szukałem trochę w internecie, i nie znalazłem żeby gdzieś było takie rozwiązanie. Jak ktoś jest pewny, że nie ma to niech napisze :)
Dzięki.
Zakładając, że JButton'y będą się różniły tylko nazwą?
private void createButtons(){
int n = 500;
JButton[] buttonArray = new JButton[n];
for(int i=0; i<n; i++){
buttonArray[i] = createButton("Button"+i);
}
}
private JButton createButton(String name){
JButton button = new JButton(name);
// Tutaj cos jeszcze...
return button;
}
Ewentualnie możesz to w drugiej metodzie do pętli.
zagi195 napisał(a):
Jeszcze mam takie pytanie: Czy w javie jest możliwość aby nazwa np. JButton składała się tez ze zmiennej, bo tworząc powiedzmy 50 przycisków o nazwie różniącej się tylko liczbą na końcu, to strasznie dużo linijek zajmie.
Obiekty takie jak JButton, które tworzysz nie mają w ogóle żadnej nazwy. Nazywasz jedynie zmienne, które trzymają referencje do takich obiektów. Możesz wszystko załatwić jedną zmienną tego typu lub lepiej jednym kontenerem JButtonów, którego komórkom możesz przypisywać kolejne wywołania new w jakiejś pętli. Wszystko zależy do czego Ci takie masowe ilości komponentów są potrzebne. Aby się do takiego odwołać potrzebna Ci tylko referencja, a czy będzie ona jakoś nazwana, to jest już kwestia nie/wygody.
Gdybyś się bardzo uparł, to mógłbyś w ogóle nie używać zmiennych, ani pól dla komponentów GUI ponieważ każdy panel czy komponent potrafi iterować po wszystkich elementach umieszczonych wewnątrz niego (a to oznacza dostęp do referencji).
Za mało umiem jeszcze, bo nie rozumiem...
Aktualnie mam kilkadziesiąt tak ustawianych przycisków:
JButton = koperta_1, koperta_2, koperta_3, koperta_4............;
koperta_1 = new JButton(new ImageIcon("img/koperty/koperta_1.jpg"));
koperta_1.setBorderPainted(false);
koperta_1.setBounds(48, 48, 99, 37);
add(koperta_1);
koperta_1.addActionListener(this);
koperta_1.addMouseListener(this);