GRY-Online.pl --> Archiwum Forum

Java - problem ze Swingiem.

28.07.2008
10:58
[1]

Moby7777 [ Generaďż˝ ]

Java - problem ze Swingiem.

Hej, mam mały problem z aplikacją w Javie. Otóż chcę zrobić comboBoxa, który przy zmianie wybranej wartości będzie coś zmieniać na ekranie. Napisałem odpowiednie procedury ale coś jest nie tak. Może po kolei:

w klasie zdefiniowany jest parametr
private Integer type = 1;

dodatkowo dodałem actionListener:
treeTypeComboBox.addActionListener(new ActionListener() ‹
public void actionPerformed(ActionEvent e) ‹
type = treeTypeComboBox.getSelectedIndex() + 1;
//JOptionPane.showMessageDialog(MainApp.frame, type.toString());
rebuildTree();

›);


Działa on (prawie) poprawnie. Zmienia odpowiednio typ i wywołuje metodę rebuildTree w celu przerobienia odpowiednich rzeczy na ekranie. Problem jest następujący: w chwili obecnej działa to tylko kiedy przełączam wybrany element na comboBoxie za pomocą strzałek na klawiaturze - myszkę ignoruje. Dziwność polega na tym, że kiedy odkomentuję linię JOptionPane to... działa poprawnie również przy obsługiwaniu myszką. Nie muszę chyba dodawać, że nie chcę wyświetlać tego MessageDialog... możecie mi powiedzieć jak to poprawić?

28.07.2008
11:22
[2]

MOD [ Generaďż˝ ]

Moze jest jakas roznica w akcjach- zmienianie za pomoca strzalek a za pomoca myszki, i musisz dodac obsluge innej akcji.

28.07.2008
11:31
[3]

Katane [ Rainwalker ]

addItemListener

polecam

28.07.2008
11:44
[4]

Moby7777 [ Generaďż˝ ]

Katane --> Stronę, którą podałeś wyobraź sobie: znam. AddItemListener robi dokładnie to samo, co ActionListener. Konkretniej to jest tak: mam label, które wyświetla wartość parametru type oraz obiekt typu JTree, który powinien być całkowicie przebudowywany w momencie zmiany wybranego typu. Label zmienia się zawsze - niezależnie od kontrolera. JTree natomiast przy użyciu myszki zmienia się tylko, kiedy wyświetlam JOptionPane.showMessageDialog... przy użyciu klawiatury jest dobrze i bez tego. Nie wiecie co może być przyczyną?

28.07.2008
11:50
[5]

Katane [ Rainwalker ]

to rebuildTree() to nie jest metoda API Javy tylko Twoja, tak?

jezeli cos mi sie nie odswieza, zawsze wywoluje repaint() na panelu i validate() na ramce, w ktorych znajduje sie kompnent.

28.07.2008
12:06
smile
[6]

Moby7777 [ Generaďż˝ ]

Katane --> Tak, rebuildTree() jest moją metodą. Validate wywołuję i się odświeża ale... nie z myszką. Wygląda to tak, jakby zmiana z myszki nie była uwzględniana wystarczająco szybko...

© 2000-2024 GRY-OnLine S.A.