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ć?
MOD [ Generaďż˝ ]
Moze jest jakas roznica w akcjach- zmienianie za pomoca strzalek a za pomoca myszki, i musisz dodac obsluge innej akcji.
Katane [ Rainwalker ]
addItemListener
polecam
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ą?
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.
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...