ActionListener w JTabbedPane

0

Witam,

Jeżeli to pytanie jest banalne to przepraszam, szukałem na forum lecz nie odnalazłem podobnego przypadku.

Napisałem program, który w JTabbedPane zawiera kilka JPanel. Prawie wszystko działa bez zarzutu, za wyjątkiem ActionListener na każdym JButton.

... if (s==Jbutton && JRadioButton.isSelected || s==JTextField && JRadioButton.isSelected)...

JButton nie działa na żadnej zakładce natomiast enter wykonuje operacje.
Dodam że dla każdej zakładki stworzyłem oddzielny JButton.

0

Albo masz błąd, albo brakuje jakichś instrukcji. Przy tak precyzyjnym opisie swojego kodu, nie licz na bardziej przydatne odpowiedzi.

0

Nie wiem czym jest s ale raz porównujesz to ze zmienną Jbutton, a raz z klasą JTextField...
W klasie JRadioButton nie ma statycznego atrybutu isSelected...
To się na pewno kompiluje?

Z tego co pamiętam o działaniu operacji logicznych, to ten warunek jest prawdziwy tylko, gdy: s==Jbutton && JRadioButton.isSelected lub gdy s==Jbutton && s==JTextField. Może będzie działać w oczekiwany przez Ciebie sposób, gdy użyjesz nawiasów do pogrupowania warunków?

0

W kwestii wyjaśnienia.

Program się kompiluje i działa, jedyny problem jest taki że wciśnięcie JButton nie wykonuje komend pomimo dodanego ActionListener'a, a wciśnięcie "enter" wykonuje komendy.

"s" jest to źródło ActionListener'a.

Ps. Do momentu gdy program był napisany w JFrame wszystko działało od momentu zmiany na JTabbedPane i JPanel JButton przestał spełniać swoje zadanie.

0

Problem rozwiązany.

Wystarczyło dodać dodatkowe nawiasy:

...

if ((s==Jbutton && JRadioButton.isSelected) || (s==JTextField && JRadioButton.isSelected))

...

1

W kwestii wyjaśnienia (dla początkujących): @KamPad stworzył chyba najbardziej idiotyczny (i działający) kod w historii Swinga. Mianowicie utworzył zmienne o nazwachJTextField i JRadioButton.
Na dodatek, zadając pytanie na forum, nie raczył o tym powiedzieć.

0

@KamPad na przyszłość lookaj sobie tam: http://zuskin.com/java_naming.htm :p

0

Bogdans nie nazwałem tak zmiennych tylko zapisałem tak na forum aby każdy kto czyta wiedział co było sprawdzane.

Uważam, za niestosowne na forum pisać tego typu komentarzy w stosunku do osób początkujących, którzy mają jakiś problem z zamierzonym działaniem kodu.

Tak wygląda dokładnie kod

... else if ((s==bConvert && rbFeetToMetre.isSelected) || (s==tFeet &&rbFeetToMetre.isSelected))...

Po takim zapisie wiedziałbyś o co mi chodzi?

0

Taki zapis byłby wystarczający do zasugerowania, że brakuje nawiasów;)

A tak np. ja nie odczytałem Twoich daleko idących wyjaśnień jako wyjaśnień, tylko jako coś co wbrew temu co mówisz, nie koniecznie powinno się skompilować. Oczywiście rozważałem też, że mogłeś nazwać zmienne tak, jak klasy albo odwoływać się do zupełnie innych klas o takich samych nazwach jak te ze swinga, ale wydało się to mniej prawdopodobne...
Zupełnie nie przyszło mi przez myśl, że mogłeś zmienić nazwy zmiennych na nazwy klas, chcąc ułatwić zrozumienie kodu (uzyskałeś odwrotny efekt).

W przyszłości możesz po prostu opisać co jest czym albo dołączyć w kodzie deklaracje zmiennych. Podmiana nazw zmiennych na nazwy klas, to bardzo (i dużo bardziej) nietypowy pomysł i raczej nie powinieneś tak robić...

0

@notexists napisał, że ten kod jest niepoprawny i się nie skompiluje. A Ty na to

W kwestii wyjaśnienia.
Program się kompiluje i działa, ...

Bez słowa wyjaśnienie, że to co zamieściłeś na forum, to nie jet kod tylko jakiś tajemniczy szablon.

0

Wybaczcie, jestem początkujący na tym forum i to mój pierwszy post. Na przyszłość będę wiedział.

karolinaa dzięki za tą stronę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1