@edzio94: Zamiast czystych Pane stosuj odpowiednie layouty - BorderPane, VBox, HBOx itd., które automatycznie się rozciągają i pozwalają ustawić zachowanie elementów w nich zawartych
  • Odpowiedz
@edzio94: Da radę, ja to mam rozwiązane w taki sposób:


    
public** javafx.scene.control.TableView productTable;
**public** TableColumn productName;

/////////////
            itemsInTable = FXCollections.observableArrayList(**new** LocalItem("jakisString"));

            productName.setCellValueFactory(cellData -> cellData.getValue().nameProperty);
            productTable.setItems(itemsInTable);

gdzie LocalItem to obiekt, który ma pole
**public** StringProperty nameProperty;

a konstruktor to
**public** LocalItem(String name) {
**this**.nameProperty = **new** SimpleStringProperty(name);
       }
`
jak coś to PW ;)
cos sie
  • Odpowiedz
@edzio94: nigdy nie definiuj widoku w javieFX przez normalny kod Javy, bo:
-ciężko utrzymać
-do fxmla masz scene buildera, czyli edytor wysiwyg, który generuje ładny kod, pozwala wygenerować klasy kontrolerów. Innego narzędzia tego typu na chwilę obecną nie ma.
-fxml wymusza korzystanie z mvc, nie ma opcji, żebyś do widoku wrzucił jakieś śmieci(bo to xml), klasa kontrolera też ma raczej jasne funkcjonalności (wstrzyknięcie zależności i metoda initialize)
Do Fxmla też podpinasz
  • Odpowiedz
Zachęcony bogactwem CSSa postanowiłem nauczyć się robienia GUI w JavaFX w FXMLu, tylko za cholerę nie mogę rozgryźć jak ustawiać szerokość i wysokość elementów ( ͡° ʖ̯ ͡°)

Da się tutaj zrobić jak w HTMLu typu button width:100%, i wtedy button rozciąga się na całą dostępną szerokość? Jak to zrobić?

#programowanie #java #javafx #css
@Lunder: szerokość/wysokość to raczej zadanie layout managera, więc powinieneś ustawić właściwość maxWidth Buttona, czy innej kontrolki na max value
  • Odpowiedz
Daję maxWidth na Infinity i nie pomaga ( ͡° ʖ̯ ͡°)


@Lunder: no i to jest prawdopodobnie problem, że dajesz Infinity. Scene Builder z tego co pamiętam jako MAX_VALUE wrzuca maxymalną wartość doubla. Serio spróbuj w scene builderze to zrobić - w odróżnieniu od syfu jaki generował np. NetBeans w Swingu, tutaj kod jest czyściutki i przejrzysty (zresztą takiego XMLa ciężko popsuć).
Dodatkowo bez korzystania ze Scene
  • Odpowiedz
#programowanie #java #javafx Czemu tabela nie aktualizuje mi się przy zmianie wartości jakiegoś obiektu z tej tabeli? Używam SimpleStringProperty i powinno zaktualizować tabele a nie aktualizuje tylko muszę odświeżać całą tabelę

Deklaracja tabeli i wypełnienie danymi
@FXML
private TableView userTable;
@FXML
private TableColumn emailColumn;
private ObservableList observableUserTable;

userDAO = new UserDAOImpl();
observableUserTable = FXCollections.observableArrayList(userDAO.findAll());
userTable.setItems(observableUserTable);
emailColumn.setCellValueFactory(
new PropertyValueFactory<>("email"));

metoda wykonywana po kliknięciu przycisku
@FXML
void newUser(ActionEvent event) {
User user = (User)
Mireczki mam problem z JavaFx. Robię aplikację, która ma przeprowadzić eksperyment Lexical. W dużym skrócie polega to na tym, że użytkownik dostaje na ekran najpierw jedno słowo po chwili drugie i ma określić czy to drugie było prawdziwym słowem. Bada się przy tym czas reakcji i później średnie itd. Pomiędzy wszystkimi czynnościami jest zdefiniowana określona przerwa. Np. między wyświetleniami słów - 50 msec. Pomiędzy kolejnymi próbami - 250 msec. Takich prób jest
Zrobiłem program w #java do wstawiania danych z konsoli do bazy #mysql i teraz chce zrobić do tego oprawę graficzna w #javafx.
Chcę stworzyć 4 różne wersje okna które będą się wyświetlać w tym samej ramce.
Okno powitalne z menu na górze z dwoma buttonami z wyborem opcji(dodaj dane do bazy, zobacz dane w bazie) Po wybraniu opcji chcę aby pojawiły się nowe przyciski w TYM samym oknie i aby zostało
@Glupi_login: nie musisz robić żadnych osobnych scen. Rozwiązaniem Twojego problemu jest Layout StackPane. Na odpowiednim layoucie podrzędnym dla niego wywołujesz metodę toFront() i to cała magia.
  • Odpowiedz
Mirki, mam JFXPanel, w którym osadzony jest obiekt (nazwijmy go A) klasy rozszerzającej klasę Control. JFXPanel włożyłem do JPanela.
Pytanie - w jaki sposób mogę kontrolować rozmiar A, skoro nie znam rozmiaru JPanela, a JFXPanel dopasowuje swój rozmiar do rozmiaru A? Jakieś pomysły? Bo nic mi do głowy już nie przychodzi, nawet jeśli udało mi się ustawić rozmiar A na rozmiar JPanela, to po rozciągnięciu JPanela, A nie zmienia swojego rozmiaru.
#
Pracuję obecnie nad aplikacją, która zbudowana jest na Swingu, ale używa też komponentów javaFX, które są wrzucone do środowiska Swingowego za pomocą JFXPanel. W związku z tym wielokrotnie używam tego kawałka kodu, aby wykonywać operację na komponentach javaFX:
Platform.runLater(new Runnable() {
@Override
public void run() {
//coś tam
}
});
Gdzie w miejscu komentarza umieszczam kod służący do inicjalizacji obiektów, czy wykonywania metod.
Mam pytanie - czy jest to poprawny sposób użycia
Gdzie w miejscu komentarza umieszczam kod służący do inicjalizacji obiektów, czy wykonywania metod.


@Mave: w miejscu komentarza powinien znajdować się kod, który musi wykonać się w głównym wątku Javy FX, czyli wszystko co ma wpływ na widok komponentów FXowych. Lepsze pytanie jakie nasuwa mi się na myśl, to z jakiego powodu jeszcze używasz swinga?
  • Odpowiedz
@Mave: skoro sam na sobie wymuszasz łączenie swinga z javą fx, to lepiej używać tylko javy fx, chyba, że masz dużą potrzebę korzystania z jakichś elementów komunikacji z systemem - ikonki w trayu itp. Korzystając z Javy FX na pewno w dużej mierze uniknąłbyś korzystania z rzeczy typu Platform.runLater, czy SwingUtilities.invokeLater.
Największą zaletą JavyFX jest to, że cały widok ogarnąłbyś sobie w FXMLu, ostylował byś wszystko CSSem (chyba, że piszesz grę,
  • Odpowiedz
@Mave: ja korzystałem z samej biblioteki, nie konkretnie z tego co piszesz. Na razie dałem sobie z nią spokój, bo nie działała ze Scene Builderem. Napisz w czym problem, będzie łatwiej
  • Odpowiedz
@Wypok_spoko: pytanie obiektu o cokolwiek, w tym o stan, nie jest wcale ładne, więc pomimo, ze nie znam się na JavaFX to mogę powiedzieć tylko, że jeśli nie ma takiej metody w API to bardzo dobrze :)
Pamiętaj, OOP -> mów obiektowi co ma robić a nie pytaj o stan.
  • Odpowiedz
@Wypok_spoko: np, javafx jest dla mnie również jak nieodkryty ocean, jak czasami czytam rozwiązania ludzi na stacku to się za głowę łapię, że można tak prosto ( ͡° ͜ʖ ͡°)
  • Odpowiedz
Cześć,

potrzebuje do projektu z JavyFX timera odliczającego czas, np. ustawiam sobie 60 sekund i po naciśnięciu buttona textfield co sekundę zmienia się na 59, 58 itd. Chodzi mi o samo zmienianie tekstu na textfieldzie co sekundę.

Mój problem polega na tym, że nie za bardzo wiem jak się za to zabrać, próbowałem z wątkami i w konsoli mi dobrze odlicza, ale metoda sleep(1000) mrozi mi apkę (później doczytałem żeby tego nie
@amdo: W JavieFX zadania w tło deleguje się przy użyciu klasy Task

Robisz więc:

Task task = new Task() {klasa anonimowa}

Thread thread = new Thread(task);

thread.start();

Do odświeżania samego widoku masz dwa wyjścia - bindowanie wartości czasu z wartością textFielda, albo po prostu odświeżanie danej kontrolki w stylu textField.setText(tutaj czas). W drugim przypadku jeżeli chcesz mieć pewność, że widok zostanie poprawnie odświeżony musisz pamiętać o dokonywaniu zmian w głównym wątku
  • Odpowiedz
https://www.youtube.com/watch?v=iB5sLOmWHjQ

wszędzie tylko javafx ostatnio, więc też stwierdziłem, że w amatorskich projektach trzeba się przerzucić(a appki do pracy gdzie 1.6 klepać z bólem - nie pracuję jako programista. jeszcze ( ) ) i na wprawkę i pierwszy ogień poszło to. jakby ktoś był zainteresowany to https://github.com/ilmash/BezierCurve

od razu mówię, że kod jest bardzo średni i na razie nie widać w nim potencjału na rozbudowę - będę część
@stefan_banach: piszę w IntelliJ i Eclipse(chociaż głownie to pierwsze, bo 1. podoba mi się 2. jestem studentem i mam dzięki temu Ultimate 3. świetny #tylkonocny), ale do Eclipse możesz zaimportować tworząc nowy projekt a potem

File->Import->General->File System i dodać ściągnięte pliki(to jest najprostszy sposób jaki przychodzi mi do głowy i który działa na pewno)
  • Odpowiedz
#naukaprogramowania #javafx

Od jakiegoś czasu mocno angażuję się #javafx zwłaszcza, że w Javie już trochę pisałem. Swing to przestarzała biblioteka do pisania aplikacji z graficznym interfejsem użytkownika, jakaś odrobina nadziei tkwi jeszcze w JavaFX zwłaszcza, że jest dosyć elastyczna, wykorzystuje css, fxml, js (czy inne skryptowe języki) i pozwala na szybkie budowanie dynamicznych aplikacji z GUI. Dużo siedziałem w dokumentacji, ale jakoś brakowało mi jednej porządnej pozycji, w której autor połączyłby możliwości
  • Odpowiedz
#programowanie

krótka piłka: aplikacje użytkowe, nie jakieś tam gry i programowanie silników manewrowych teleskopów

#qtjambi czy #javafx czy oba? #java #gui

krótke uzasadnienie mile widziane. Swing/AWT mają swoje lata i czytałem różne mieszane opinie. w SWT trochę pisałem i nadal staram się poznawać, bo do prostych aplikacji to dla mnie bardzo przyjemne narzędzie w połączeniu z Eclipse. ale przyszłościowo - który z wymienionych frameworków?
@ppawel: widzę, że kolejna świetna odpowiedź. niestety, niezwiązana z tematem. przypomnę może jakie zadałem pytanie: który framework do gui wybrać w javie? qt-jambi(jak @archlinuxuser wspomniał, raczej bez wsparcia, chyba, że jakiś inny sensowny bind dla Qt) czy javafx, która aktualnie wygląda na ciekawy wodotrysk z możliwościami. i nie obchodzi mnie, że Fortran jest lepszy do pisania aplikacji pod abakusa a karty perforowane najlepiej czyta się w tosterze, bo ma odpowiedni podajnik.
  • Odpowiedz
@ilmash: jeśli nikt nie narzuca Ci technologii to wybierz JavaFX. Sprawdzałem chwilkę jego możliwości i wygląda obiecująco, ale jest jeszcze młodą technologią i to widać. Na przykład mając e(fx)clipse nie widziałem możliwości generowania getterów/setterów dla nowych klas *Property, w plikach fxml nie ma możliwości ustawienia dwukierunkowego bindingu (w kodzie źródłowym widnieje komentarz w stylu "Not implemented yet") itp. Mimo niektórych braków i drobnych niedociągnięć pisze się w tym dość wygodnie i
  • Odpowiedz