Wpis z mikrobloga

jest jakas opcja zeby uzyc wartosci Stringa w kodzie?

mam Stringa, ktorego pobieram z bazy danych i jego zawartosc to nazwa buttona. potrzebuje zeby wartosc tego stringa byla uzyta tak jakbym wpisal ja recznie do kodu, bo chce zrobic button.setStyle. Mam nadzieje, ze ktos potrafi zrozumiec o co mi chodzi.

tak jak przy dodawaniu stringow/intow z kodu do bazy danych daje sie '" + string/int + "' - jest w tym przypadku jakis podobny sposob?
#java #javafx
  • 17
@Lucky_Freak: Nie wiem jak to się realizuje w javieFX, ale możesz kombinować w taki sposób:
- Przy deklaracji komponentu nadajesz mu id
Nastepnie:
- Szukasz w drzewie komponentów czy jaktotam sie nazywa w javiefx komponentu o danym id
- Ustawiasz na znalezionym styl

Chociaż to i tak brzmi dziwnie i nie wiem czy dobrze realizujesz wymaganie
@kam3o: no w moim kodzie tak to wyglada, ale na prostszym przykladzie chodzi mi o to:

masz program w ktorym masz 3 przyciski, pytasz uzytkownika, ktory przycisk ma zmienic kolor. uzytkownik wpisuje 2, zbierasz scannerem wartosc 2, int nazywa sie WASD, a button ma id 2. i teraz chcesz ustawic 2.setscene(something)
@quwer:
1.wykonane
2.wykonane
3.albo jest to niemozliwe albo ja nie umiem, i stad moje pytanie. mam w Stringu zawartą nazwę istniejącego buttona. nie wiem jak zrobic nazwaButtonaZeStringa.doSomething
@Lucky_Freak: uniwersalne rozwiązanie to użycie mapy:

Button button1 = ...;
String button1Name = "b1";
Button button2 = ...;
String button2Name = "b2";
...
Map buttonMap = new HashMap<>():
buttonMap.put(button1Name, button1);
buttonMap.put(button2Name, button2);
...
String buttonNameFromDB = ...
Style styleFromDB = ...
buttonMap.get(buttonNameFromDB).setStyle(styleFromDB);

W java fx może jest jakiś sposób na definiowania unikalnych identyfikatorów dla komponentów. Jeśli tak to nie musisz sam ich tworzyć w postaci Stringów i będziesz mógł stworzyć nieco
@Lucky_Freak: WUT xD Nie słuchaj ich. Prosta sprawa. Deklarujesz w swoim kontrolerze Buttona z @FXML
np.
@FXML
private Button nameOfId;

nameOfId to nazwa id którą podajesz w fxml (przez SceneBuildera)

później już tylko w dowolnej metodzie nameOfId.do();

Jakbyś miał problem to pisz śmiało