2015-05-13 15 views
7

Jestem obecnie tworzeniem aplikacji JavaFX z lokalizacją języku słowackim i wewnątrz aplikacji Używam okno Alert za pokazanie wyjątki rozszerzalnej okienka zawartości jak pokazano poniżej na zdjęciach:JavaFX 8 Lokalizacja elementów wewnętrznych dialogowego

show details - alert screen hide details - alert screen

chciałbym mieć to okno całkowicie przetłumaczone który idzie dobrze z Header, Title lub Content ale nie mogę znaleźć sposób, jak przetłumaczyć Show/Hide details etykietę obszaru rozwijanego.

Moje pytanie może być trochę uogólnione: jak zmienić/przetłumaczyć tekst wewnętrznych elementów JavaFX?

Z góry dziękuję za pomoc.

PS: Do tworzenia tego okna alertu dla wyjątków używam kod, jak znaleźć na code.makery.ch

+0

wygląda jak błąd - jeśli dostępne są ustawienia regionalne, wszystkie przetłumaczalne łańcuchy powinny zostać przetłumaczone. Możesz rozważyć złożenie raportu w narzędziu do śledzenia zdarzeń fx (jeśli nadal jest w sieci, usłyszałem, że zostanie on połączony z rdzennym trackerem jdk w tym miesiącu) – kleopatra

+0

@kleopatra Nie używam prawidłowej lokalizacji przy ustawianiu ustawień narodowych lub czegoś podobnego. Właśnie ustawiam wszystkie etykiety, które mają dostępne setery publiczne. Czy powinienem użyć właściwej lokalizacji, aby go rozwiązać? –

+0

hmm .. Słowacki nie jest dostarczany przez core jdk? Lub po prostu nie przez fx? – kleopatra

Odpowiedz

3

dla konkretnego przypadku użycia, można dodać kolejny słuchacz expandedProperty który zastąpi teksty pokazane na przycisk „Właściwości” :

Platform.runLater(() -> 
{ 
    Hyperlink detailsButton = (Hyperlink) alert.getDialogPane().lookup(".details-button"); 

    alert.getDialogPane().expandedProperty().addListener(
      (ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> 
    { 
     detailsButton.setText(newValue ? "My less text" : "My more text"); 
    }); 

    // trigger listeners 
    alert.getDialogPane().setExpanded(true); 
    alert.getDialogPane().setExpanded(false); 
}); 

Aby dowiedzieć się więcej o hackach, zobacz Localizing JavaFx Controls. Stamtąd musisz umieścić następujące klucze w swoim niestandardowym pliku właściwości:

// translate these 
Dialog.detail.button.more = Show Details 
Dialog.detail.button.less = Hide Details 
+0

To wygląda naprawdę dobrze, ale mam problem z wyszukiwaniem '' '.details-button'''. W debugerze widzę, że' 'dialogPane''' ma właściwość' 'detailsBut''' ale metoda odnośnika zwraca' '' null''' i nie wiem Jak to zrobić stamtąd Próbowałem kilka odmian ciąg, ale bez powodzenia –

+0

@Supermartzin Działa dla mnie.Nie prawdopodobnie umieścić swój kod wewnątrz Platform.runLater(). –

+0

@ NikšaBaldun Dzięki! Zapomniałem, że i odkryłem, że korzystam z innej nieruchomości, teraz wszystko działa dobrze! –

Powiązane problemy