Zmiana czcionki jako efekt w innej ramce

0

Witajcie,

Mam problem ze zmiana czcionki.
W ramach cwiczen pisze moja wersje worda. Mam w glownej klasie stworzone Menu i TextPane. W Menu mam MenuItem Fonts, ktore otwiera mala ramke z wyborem czcionek (ComboBox) i Buttonem. Wywolanie nowej ramki dziala.
Kombinowalem i chyba pogubilem sie z dziedziczeniem, bo nie potrafie wywolac skutku w glownej klasie. Chce wybrac czcionke w malej ramce, zatwierdzic buttonem i wylaczajac mala ramke zmienic czcionke w glownym oknie.

Prosze o pomoc. W jednym z filmow na youtubie JavaDevMatt slyszalem, ze problem powinno sie probowac rozwiazac pol godziny, jesli sie nie da - to pytac. Jako ze sie uczce probowalem szukac rozwiazania o wiele dluzej, ale rece mi opadly.

0

A w jaki sposób w ogóle przekazujesz takie informacje? Masz to w jakiś sensowny sposób zrobione w postaci MVC? Bo dla mnie to powinno wyglądać mniej więcej tak:

  • user klika w comboboxa i wybiera nową czcionkę
  • informacja o tym jest z actionlistenera przekazywana do kontrolera/prezentera
  • kontroler/prezenter modyfikuje odpowiednio model oraz wysyła odpowiedni event do widoku
  • wszystkie komponenty widoku oczekujące na event łapią go sobie i odpowiednio zmieniają co tam potrzeba

Jeśli masz tam dziedziczenie, a już szczególnie za dużo dziedziczenia, to jest to na 99% źle zrobione.

0

user klikajac w comboboxa wybiera jedna z czcionek, informacja o tym jest przekazywana z ActionListenera do buttona. I tu sie zamotalem. (pane to moj JTextPane w glownej klasie), kod jest z klasy malej ramki


@Override
public void actionPerformed(ActionEvent evt)
{
Object action1 = evt.getSource();
if(action1==bFont)
{
String font = comboFonts.getSelectedItem().toString();
if(font.equals("Wingdings"))
{
pane.setFont("Wingdings");
}
}

0
  1. Robisz to źle bo powinieneś mieć 1 action listener/lambde per guzik a nie zrobić jednego mother of all action listeners a potem w nim ifować żeby sprawdzić co ktoś kliknął. Masz jakiś limit na liczbę lambd czy co?
  2. Robisz to źle bo próbujesz to spinać "na pałe" w sensie kontrolki z kontrolkami a to się nigdy dobrze nie kończy w czymś większym niż hello world. Lekcja na dziś: MVC/MVP. Serio.
0

Dzieki Shalom.
Ad.1 - swietnie ze wylapales zle podejscie i dajesz znac. Wyuczylem sie tej praktyki z jednego z tutoriali. Zaifowalem w ten sposob cale dosc duze Menu. Ladnie nazwane: mother of all action listeners. Zmienie to.

Ad.2 - Poczytam i bede sie uczyl dalej.

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