Вопросы с тегами [javafx]

1

голосов
2

ответ
4.9k

Просмотры

Создание пользовательского дерева с JavaFX

В принципе, я хотел бы знать, если я мог бы создать дерево и таможню оно на JavaFX ... Я пытался это сделать, но ничего не мог сделать до сих пор с этим кодом ... общественный классом Main {...... общественности Main () бросает исключение {...... // TreeView создано TreeView тв = (TreeView) fxmlLoader.getNamespace () получить ( "TreeView"). TreeItem rootItem = новый TreeItem ( "Liss"); rootItem.setExpanded (истина); tv.setRoot (rootItem); / * Для (INT I = 1, г <6; я ++) {TreeItem вещь = новый TreeItem ( "Message" + я); . RootItem.getChildren () добавить (пункт); } TreeItem вещь = новый TreeItem ( "MessageWoot"); . RootItem.getChildren () добавить (пункт); * / //Tv.setEditable(true); ТВ. setCellFactory (новый обратный вызов () {@Override общественного TreeCell вызов (TreeView arg0) {// пользовательское дерево клетка, которая определяет контекстное меню для элемента корневого дерева вернуть новый MyTreeCell ();}}); stage.show (); } // Закрытый статический класс MyTreeCell расширяет TextFieldTreeCell {частный ContextMenu addMenu = новый ContextMenu (); общественного логический clickedFirstTime = ложь; общественный MyTreeCell () {// создать экземпляр корня контекстного меню MenuItem addMenuItem = новый MenuItem ( "Развернуть"); . AddMenu.getItems () добавить (addMenuItem); addMenuItem.setOnAction (новый EventHandler () {общественного недействительными дескриптор (Event т) {TreeItem n0 = новый TreeItem ( " 'программа'"); TreeItem n1 = новый TreeItem ( ""); TreeItem п2 = новый TreeItem ( "тело"); .. GetTreeItem () GetChildren () добавить (n0); .. GetTreeItem () GetChildren () добавить (n1); .. GetTreeItem () GetChildren () добавить (n2); }}); } @Override общественного недействительный updateItem (String элемент, логический пусто) {super.updateItem (пункт, пустой); // если элемент не пуст и является корнем ... // если {System.out.println ( "UPDATEITEM -> clickedFirstTime (пусто && getTreeItem () GetParent () == NULL && this.clickedFirstTime!.): «+ this.clickedFirstTime); если (this.clickedFirstTime!) {System.out.println ( "Woot"); setContextMenu (addMenu); this.clickedFirstTime = TRUE; }}} И я сам допрос, если это право «технология», которая будет решать, что я пытаюсь сделать ... Что моя цель в этом? Во-первых, я ищу, чтобы добавить или удалить TreeItem. Надо сказать, что определенный TreeItem может быть добавлен только один раз или любые N раз, как ограничение (например: TreeItem <6 для определенного уровня и объема определенного пути корня дерева) зрения. Во-вторых, сделать некоторые TreeItem редактируемые и другие не редактируются! Когда это редактируемое, вы можете всплывали что-то для пользователя вставить некоторые входной сигнал, например! Является ли это возможным ? Я видел учебник от https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm#BABJGGGF, но я действительно путают с этим руководством ... Я не очень понимаю, механизм клеточного заводскую ... Тот факт, что он не распространяется на TreeView, когда я хочу только определенный TreeItem ... Или как я могу контролировать этот эффект / поведение? Я имею в виду, я действительно очень потерял с TreeView. Возможно, TreeView это не то, что я ищу ... PS: Я знаю, что я не могу применить любой визуальный эффект или добавить меню в дереве элементов и что я использовать механизм клеточной фабрики, чтобы преодолеть это препятствие. Просто я не понимаю идею, и как я могу это сделать!
Damiii
1

голосов
3

ответ
58

Просмотры

Неопределенный задача ExecutorService

У меня есть следующие переменные: частный ExecutorService исполнитель; частные задачи работника; У меня есть задача, которая должна быть выполнена в другом потоке, и состоянии которых должно контролироваться: общественный деятель updateTemplateBuffer () {работник = новый Task () {защищенного @Override Логического вызов () бросает исключение {// код задачи}; executor.execute (рабочий); вернуть работнику; } Задание выполнено правильно, но я не могу отслеживать, закончилась ли задача или нет. Методы executor.isTerminated () и executor.isShutdown () всегда ложно в любое время вызова. Скажите мне, как отслеживать состояние задачи правильно (начато или завершено), потому что я никогда не сталкивался с многопоточного программирования раньше.
A1ex NS
1

голосов
0

ответ
43

Просмотры

JavaFX: Как действий группы мыши по изображению

Я новичок в JavaFX, и я пытаюсь исправить обрезку над изображением. Я нашел интересное решение для кадрирования с резинкой, и теперь я пытаюсь модифицировать это в моем случае. У меня есть два контроллера. Один контроллер имеет кнопку обрезки (CropController) и другой контроллер, который содержит изображения в качестве ImageController. CropController: класс CropController общественности {@FXML частное аннулируются Initialize () {} @FXML частная пустота handleCrop () {}} ImageController: общественный класс ImageController {@FXML частное ImageView MainImage; @FXML частная аннулируются Initialize () {modelSharedOne.imageProperty () .addListener ((набл, oldImage, newImage) -> MainImage.setImage (newImage)); } @FXML частный недействительный handleMousePresses () {} @FXML частный пустоты handleMouseDragged () {} @FXML частная пустоты handleMouseReleased () {}} На основании решения резинки мне нужен, чтобы сгруппировать эти три обработчика мыши. Я не знаю, что может быть лучшим решением для этого. Я пробовал много решений, как создание модели между этими двумя контроллерами, но мне не удалось решить это решение. Каждый знает, как я могу решить эту проблему? Мой текущий CropController решение: общественный класс ToolboxController {@FXML частное аннулируются Initialize () {} @FXML частная пустота handleCrop () {SharedModelTwo.callHandlerInWorkstation (); }} SharedModelTwo: общественный класс CropImageModel {ImageController imageController; общественного недействительными callHandlerInImage () {imageController = новый ImageController (); imageController.handleCrop (); }} ImageController: класс ImageController общественности {@FXML частного ImageView MainImage; @FXML частная аннулируются Initialize () {modelSharedOne.imageProperty () .addListener ((набл, oldImage, newImage) -> MainImage.setImage (newImage)); } Общественного недействительными handleCrop () {Изображение = GetImage (); ImageView ImageView = новый ImageView (изображение); Прямоугольник = новый прямоугольник (0,0,0,0); rect.setStroke (Color.BLUE); rect.setStrokeWidth (1); rect.setStrokeLineCap (StrokeLineCap.ROUND); rect.setFill (Color.LIGHTBLUE.deriveColor (0, 1,2, 1, 0,6)); Группа imageLayer = новая группа (); . ImageLayer.getChildren () добавить (ImageView); rubberBandSelection = новый RubberBandSelection (imageLayer); }} И rubberBandSelection класс, как это было в связаны между собой. когда я бегу, что он не попал, когда мышь нажата на изображение.
ShrnPrmshr
1

голосов
1

ответ
255

Просмотры

Using Map with TableView in JavaFX

Я пытаюсь отобразить карту в TableView в JavaFX. Приведенный ниже код работает отлично, но вопрос, который я имею что обновление любой будущей карты после Initialize не отображается в TableView. общественный класс TableCassaController расширяет TableView реализует Initializable {@FXML частное TableColumn column1; @FXML частный TableColumn column2; // выборка данных Карта Карта = новый HashMap (); map.put ( "один", "один"); map.put ( "два", "Два"); map.put ( "три", "три"); общественного TableCassaController (ObservableMap карта, String col1Name, String col2Name) {System.out.println ( "Costruttore стол"); TableColumn столбец1 = новый TableColumn (col1Name); column1.setCellValueFactory (новый обратный вызов () {@Override общественного ObservableValue вызова (TableColumn. CellDataFeatures р) {// этот обратный вызов возвращает свойство только для одной ячейки, вы не можете использовать цикл здесь // для первого столбца мы используем ключ возврат нового SimpleObjectProperty (p.getValue () GETKEY ()). }}); TableColumn столбец2 = новый TableColumn (col2Name); column2.setCellValueFactory (новый обратный вызов () {@Override ObservableValue вызов общественности (TableColumn.CellDataFeatures р) {// для второго столбца мы используем значение возврата новый SimpleObjectProperty (p.getValue () ПолучитьЗначение ());.}}); ObservableList товар = FXCollections.observableArrayList (map.entrySet ()); this.setItems (пункты); this.getColumns () SETALL (столбец1, столбец2). } Теперь, если я пытаюсь обновить карту, это обновление не будет отображаться в TableView.
Moe
1

голосов
0

ответ
208

Просмотры

JavaFX BarChart не отображает двойные или поплавковые значения (только INT, длинные и короткие)

Я вызвал BarChart в JavaFX с помощью кода (без SceneBuilder) и он не может отобразить двойные значения на NumberAxis.I пытался с ИНТ, длинных и коротких значений и она отлично работает, но по некоторым причинам я не могу настроить его для работы с вещественными числами. Вот мой код: частный BarChart createBarChartMedii (Карта studentAndAverageGrades) {CategoryAxis XAxis = новые CategoryAxis (); xAxis.setLabel ( "Студент"); NumberAxis YAxis = новые NumberAxis (); yAxis.setLabel ( "Среднее"); BarChart BarChart = новый BarChart (Xaxis, YAxis); barChart.setTitle ( "Оценка среднее"); Серия XYChart.Series = новые XYChart.Series (); studentAndAverageGrades.forEach ((студент, средний) -> {series.getData () добавить (новый XYChart.Data (student.getNume (), среднее)).}); . BarChart.getData () addAll (серия); вернуться BarChart; } Это выход: нажмите на изображение Если я изменить строку, которая добавляет данные в ряд (внутри лямбда-функции в Еогеасп) с этим:. Series.getData () добавить (новый XYChart.Data (student.getNume () , average.intValue ())); она заполнит BarChart
Bogdan
1

голосов
1

ответ
31

Просмотры

JavaFX - Как я могу отобразить строки из «webEngine createWebEngine (этап этап)» на панели в другом классе

Я пытаюсь отобразить строку из ниже код панели в другом классе. общественный WebEngine helloWebEngine (стадия Стадии) {WebView WV = getWebView (); webEngine = wv.getEngine (); webEngine.getLoadWorker (). stateProperty (). добавления слушателя (новый ChangeListener () {@Override общественного недействительными изменения (ObservableValue
momi
1

голосов
0

ответ
220

Просмотры

Не удается вернуть нуль в JavaFX диалоговом результата преобразователя

У меня есть три кнопки на моем диалоговом окне, т.е. dialogPane.saveButton, dialogPane.deleteButton и dialogPane.cancelButton. В зависимости от того, какая кнопка была нажата, я хочу вернуть разные вещи (особенно, я хочу вернуть нулевое значение, если кнопка удаления нажата): setResultConverter (результат -> {если (результат == dialogPane.saveButton) {возвращают новые данные ( "кнопка Сохранить была нажата");} иначе, если (результат == dialogPane.deleteButton) {возвращение NULL;} возвращать defaultData;}); Тем не менее, выше реализации не является правильным, или, по крайней мере, он не делает то, что я ожидаю, что это сделать. Используя отладчик, я могу видеть, что, когда кнопка удаления нажата, нуль получает возвращается корректно (вызывается из Dialog # impl_setResultAndClose). Тем не менее, после того, конвертер результат вызывается снова, на этот раз с запасной вариант на кнопку отмены по какой-то причине. Я прочитал диалог документацию снова и снова, но я не могу понять это. Он утверждает Диалог закрытие Правила Важно понять, что происходит, когда диалог закрывается, а также как диалог может быть закрыт, особенно в нештатных закрывающих ситуациях (например, при нажатии кнопки «X» нажата в строке заголовка диалогов, или когда операционная система конкретные комбинации клавиш (например, Alt-F4 на Windows) вводятся). К счастью, результаты хорошо определены в этих ситуациях, и лучше всего можно резюмировать в следующих пунктах маркированного: JavaFX диалоги могут быть закрыты только «ненормально» (как определено выше) в двух ситуациях: когда диалог имеет только одну кнопку, или Когда диалог имеет несколько кнопок, до тех пор, как один из них соответствует одному из следующих требований: Кнопка имеет ButtonType которого ButtonBar.ButtonData имеет тип ButtonBar.ButtonData.CANCEL_CLOSE. Кнопка имеет ButtonType которого ButtonBar.ButtonData возвращает истину, когда ButtonBar.ButtonData.isCancelButton () называется. Во всех других ситуациях, диалог будет отказываться отвечать на все просьбы близких, остается открытой до тех пор, пока пользователь не нажмет на одну из доступных кнопок в области DialogPane диалога. Если диалоговое окно закрывается неправильно, и если диалог содержит кнопку, которая соответствует одному из двух критериев выше, диалог будет пытаться установить результат свойство любого значения, которое возвращается от вызова результата преобразователя с первым совпадающим ButtonType. Если по какой-либо причине в результате преобразователь возвращает нуль, или если диалоговое окно закрывается, когда только один не-кнопка отмены присутствует свойство результат будет нулевым, и метод showAndWait () будет возвращать Optional.empty (). Это позже точка означает, что, если вы используете одну из варианта 2 или варианта 3 (в представленной ранее в этом классе документации), то Optional.ifPresent (java.util.function.Consumer) лямбда никогда не будет называться, и код будет продолжать выполнение как если диалог не вернулся никакого значения вообще. В моем понимании, я встречаю последнюю точку: диалог Мой не закрывается ненормально (он закрыт с помощью щелчка на кнопке), и мой результат преобразователь возвращает нуль, так что я ожидаю, что это вернуть Optional.empty (). Тем не менее, он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? Это позже точка означает, что, если вы используете одну из варианта 2 или варианта 3 (в представленной ранее в этом классе документации), то Optional.ifPresent (java.util.function.Consumer) лямбда никогда не будет называться, и код будет продолжать выполнение как если диалог не вернулся никакого значения вообще. В моем понимании, я встречаю последнюю точку: диалог Мой не закрывается ненормально (он закрыт с помощью щелчка на кнопке), и мой результат преобразователь возвращает нуль, так что я ожидаю, что это вернуть Optional.empty (). Тем не менее, он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? Это позже точка означает, что, если вы используете одну из варианта 2 или варианта 3 (в представленной ранее в этом классе документации), то Optional.ifPresent (java.util.function.Consumer) лямбда никогда не будет называться, и код будет продолжать выполнение как если диалог не вернулся никакого значения вообще. В моем понимании, я встречаю последнюю точку: диалог Мой не закрывается ненормально (он закрыт с помощью щелчка на кнопке), и мой результат преобразователь возвращает нуль, так что я ожидаю, что это вернуть Optional.empty (). Тем не менее, он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? если вы используете одну из варианта 2 или варианта 3 (в представленной ранее в этом классе документации), то Optional.ifPresent (java.util.function.Consumer) лямбда никогда не будет называться, и код будет продолжать выполнение, как если диалог не было возвращено любое значение вообще. В моем понимании, я встречаю последнюю точку: диалог Мой не закрывается ненормально (он закрыт с помощью щелчка на кнопке), и мой результат преобразователь возвращает нуль, так что я ожидаю, что это вернуть Optional.empty (). Тем не менее, он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? если вы используете одну из варианта 2 или варианта 3 (в представленной ранее в этом классе документации), то Optional.ifPresent (java.util.function.Consumer) лямбда никогда не будет называться, и код будет продолжать выполнение, как если диалог не было возвращено любое значение вообще. В моем понимании, я встречаю последнюю точку: диалог Мой не закрывается ненормально (он закрыт с помощью щелчка на кнопке), и мой результат преобразователь возвращает нуль, так что я ожидаю, что это вернуть Optional.empty (). Тем не менее, он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? и код будет продолжать выполнение, как если диалог не вернулся никакого значения вообще. В моем понимании, я встречаю последнюю точку: диалог Мой не закрывается ненормально (он закрыт с помощью щелчка на кнопке), и мой результат преобразователь возвращает нуль, так что я ожидаю, что это вернуть Optional.empty (). Тем не менее, он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? и код будет продолжать выполнение, как если диалог не вернулся никакого значения вообще. В моем понимании, я встречаю последнюю точку: диалог Мой не закрывается ненормально (он закрыт с помощью щелчка на кнопке), и мой результат преобразователь возвращает нуль, так что я ожидаю, что это вернуть Optional.empty (). Тем не менее, он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в? он пытается вернуть значение, возвращенное кнопку отмены (пуля выше последней точки). Могу ли я что-то недоразумение здесь (например, я неправильно интерпретировать слово неправильно?), Или есть ошибка в реализации диалоговой системы JavaFX в?
Markus Weninger
1

голосов
0

ответ
227

Просмотры

как сделать JAVA FX гладкой прокрутки

Я сделал список костюма с помощью прокрутки панели, VBox и hboxes. я позволил перетащить прокрутки с помощью setPannable (истина), мне было интересно, что есть простой способ осуществить плавную прокрутку, как в мобильных приложениях и используя скорость перетаскивания изменить скорость прокрутки. вот что я сделал до сих пор: ScrollPane itemGrid = новый ScrollPane (); itemGrid.setPannable (истина); VBox GP = новый VBox (5); для (INT I = 0; я <100; я ++) {HBox rowBox = новый HBox (); . RowBox.getChildren () добавление (I); gp.getChildren () добавить (rowBox). } ItemGrid.setContent (GP); таким образом я могу прокрутить с помощью Mous сопротивления. но это не так приятно. какие-либо предложения?
Uthpala Bandara
1

голосов
1

ответ
147

Просмотры

Не удалось найти или загрузить основной класс приложения при создании файла банку для приложения JavaFX

Я создаю файл банки для приложения с помощью IntelliJ артефакта здания. Вот здесь я получаю эту ошибку, даже если я настроил все параметры, как указано в документации. В выходной макете я настроил главный класс, MANIFEST.MF файл. И я попытался запустить файл с помощью терминала в Linux. Любые идеи, высоко ценятся.
jsb9009
1

голосов
0

ответ
240

Просмотры

JavaFX FileChooser показать дополнительные опции

Есть Есть ли способ, чтобы показать дополнительные элементы управления в диалоговом окне выбора файлов? Я хочу что-то вроде этого: ... Имя файла: [] Сохранить как тип: [] Опции (развалилась) [х] Галочка Label: [TextField] Label: [TextField] [Сохранить] [Отменить]
h3k
1

голосов
1

ответ
181

Просмотры

Why do I get a java.lang.UnsatisfiedLinkError for com.sun.webkit.dom.HTMLInputElementImpl.clickImpl(J)V on Ubuntu 14.04.5

clickImpl (J) В при com.sun.webkit.dom.HTMLInputElementImpl.clickImpl (нативный метод) при com.sun.webkit.dom.HTMLInputElementImpl.click (HTMLInputElementImpl.java:506) при io.webfolder.ui4j.webkit.dom .WebKitElement.click_aroundBody50 (WebKitElement.java:299) в io.webfolder.ui4j.webkit.dom.WebKitElement $ AjcClosure51.run (WebKitElement.java:1) в io.webfolder.ui4j.internal.aspectj.runtime.reflect.JoinPointImpl .proceed (JoinPointImpl.java:149) в io.webfolder.ui4j.webkit.aspect.WebKitAspect $ CallableExecutor.run (WebKitAspect.java:39) ... более 6 Моя система ~ # lsb_release -a Нет LSB модули доступны , Дистрибьютор ID: Ubuntu Описание: Ubuntu 14.04.5 LTS Release: 14,04 Codename: испытанный И моя JAVA версия: ~ # Java -версия Java версия "1.8.0_151" Java (TM) SE Runtime Environment (сборка 1.8. 0_151-b12) Java HotSpot (TM) сервер VM (сборка 25.151-b12, смешанный режим) И если я запускаю команду нм на так Пб я, кажется, думают, что функция есть: ~ # нм / USR / Библиотека / JVM / Java-8-оракул / JRE / Библиотека / i386 / libjfxwebkit.so | Grep HTMLInputElementImpl | Grep clickImpl 010254b0 т Java_com_sun_webkit_dom_HTMLInputElementImpl_clickImpl Что это такое, что мне не хватает во всем этом? Я много раз пытался переустановить Java, но это не помогло.
Tobias Eriksson
1

голосов
0

ответ
72

Просмотры

Изменение объекта в родительском контроллере в JavaFX

вот моя проблема: У меня есть 3 FXML файлов с каждым контроллером назначен. ExplorerPage.FXML: компоновка используется, чтобы показать gridpane с неопределенным количеством объектов внутри. ExplorerNoteController.FXML: объект (StackPane) вставляется в gridpane. NoteHoverMenuController.FXML: Когда пользователь перемещает курсор на предыдущем объекте он показывает опции для обновления или удаления объекта. Для возобновления: ExplorerPage.FXML -> ExplorerNoteController.FXML -> NoteHoverMenuController.FXML Gridpane -> Stackpane -> Borderpane (2) То, что я хочу сделать, когда я нажимаю на кнопку «удалить» в NoteHoverMenuController.FXML, это удалить текущий объект от gridpane (находится в ExplorerPage.FXML). Но я понятия не имею, чтобы сделать это. Я попытался связывания со свойствами, статические методы, .. но нет результатов satisfaying. Это мой код: контроллер ExplorerPage общественного класса ExplorerPage реализует Initializable {личное соед соединения; // ЗАГРУЗИТЬ ПРИМЕЧАНИЯ частного Списка gridNotes = новый LinkedList (); JFXRadioButton alertButton = новый JFXRadioButton (); // TEMP StackPane spaneExpNote; // StackPane используется для переключения передней / задней панели (наложения) частных байты J = 0; частные байты к = 0; @FXML частный GridPane FXMLNotesPane = новый GridPane (); @Override общественности Initialize недействительным (URL fxmlFileLocation, ResourceBundle ресурсы) {попытаться {// НАГРУЗОЧНЫЕ DATAS из БД Вт / ПАРАМЕТР FOLDER соед = DBInitialize.getInstance (); ДАО findAllNotes = новый NoteDAO (Conn); gridNotes = findAllNotes.findAll ( "Orange"); // STACKPANES КОНСТРУКЦИИ для (INT I = 0; я <gridNotes.size (); я ++) {если (к> 2) {j = 0; к ++; } FXMLLoader погрузчик = новый FXMLLoader (GetClass () getResource ( "/ FR / cryption / просмотр / ExplorerNote.fxml").); spaneExpNote = (StackPane) Loader.load (); ExplorerNoteController контроллер = loader.getController (); controller.setData (gridNotes.get (я) .getTitleNote (), gridNotes.get (я) .getContentNote (), gridNotes.get (я) .getDateNote ()); FXMLNotesPane.add (spaneExpNote, J, K); j ++; } ExplorerNoteController общественного класса ExplorerNoteController реализует Initializable {@FXML StackPane rootNotePane; @FXML Private Label labPaneTitle1; @FXML Private Label labPaneDate1; @FXML Private Label labPaneContent1; BorderPane панель = NULL; Строка ОК = «ОК»; / ** * Инициализация класса контроллера. * / @Override общественного недействительными инициализации (URL URL, ResourceBundle Р.Б.) {} общественного недействительными SetData (строка заголовка, содержание Строка, строка даты) {labPaneTitle1.setText (название); labPaneContent1.setText (содержание); labPaneDate1.setText (дата); } Общественного недействительными showHoverMenu () бросает IOException {FXMLLoader погрузчик = новый FXMLLoader (GetClass () getResource ( "/ FR / cryption / просмотр / NoteHoverMenu.fxml").); Панель = (BorderPane) Loader.load (); NoteHoverMenuController контроллер = loader.getController (); . RootNotePane.getChildren () добавить (панель); } Общественного недействительный hideHoverMenu () бросает IOException {rootNotePane.getChildren () удалить (панель). } .... NoteHoverMenuController общественного класса NoteHoverMenuController реализует Initializable {Строка idNote = ""; @FXML BorderPane hovernode; @Override общественного недействительными инициализации (URL URL, ResourceBundle гь) {// TODO} общественного недействительными SETID (String ID) {idNote = идентификатор; } Общественного недействительными deleteNoteExplorer (ActionEvent событие) {System.out.println (hovernode.getParent () поиск ( "stckpane").); // удаляет ПРИМЕЧАНИЕ}} Я буду обновлять этот пост, если вы хотите FXML (ы), а также. Благодарю. ЭКРАНЫ: экран Gridpane экрана Hover StackPane
OFFEN
1

голосов
1

ответ
253

Просмотры

Java + Maven - executable jar from test class

I've got a multi-module Selenium project that's using the Page Factory and running tests through Suites by calling mvn clean verify... I've created a JavaFX app that loads all the Suites and lets the user select a test, which is then run by the above-mentioned command. The problem I'm facing now is that, in order to load all the test classes (I'm using test-jar in module dependencies so that my test class in the app module can see the tests in the other modules), I need to have the main method in a test class, and not in a main class. Obviously, that doesn't work since the test classes are not included in the jar. I'm looking for a solution, either on having that main method in a test class, or for src/main to see into src/test. One of the recommendations people have been giving is to have a separate module for the tests. This is not an option for me though as I don't have the rights to move the tests classes around or change the project structure that much. Here's the plugin I'm using: org.apache.maven.plugins maven-jar-plugin 3.0.2 org.apache.maven.plugins maven-assembly-plugin com.package.myapp.Main jar-with-dependencies false make-assembly package single For loading the suites, I use ClassLoader loader = Thread.currentThread().getContextClassLoader() which gets an ImmutableSet from ClassPath.from(loader).getTopLevelClasses()
StopTheRain
1

голосов
0

ответ
37

Просмотры

How To Have An Image Look As If It's Standing On Platform( If It “Lands” On it)

So Im creating my first 2d java game and im wondering how to have it seem as if the player is standing on a platform if it lands on it. The problem lies in the fact that in my game the "NINJA" is always at the center of the screen and never moves but just the background and platforms do. Any ideas on how to solve the problem? r=background rectx=backgroundx recty=backgroundy block=platform blockx=platformx blocky=platformy my code if ((jumping == true)) { recty = recty + 3; r.setY(recty); blocky = blocky + 3; block.setY(blocky); rectx = rectx - 5; r.setX(rectx); blockx = blockx - 5; block.setX(blockx); ninjarun1.setImage(imgjumpingninja); if (jumpforce == 0) { ninjarun1.setImage(imgninjafalling); recty = recty - 3; r.setY(recty); rectx = rectx - 5; r.setX(rectx); blockx = blockx - 5; block.setX(blockx); blocky = blocky - 3; block.setY(blocky); } } //rightrunning if ((jumping == false)) { blocky = 300; block.setY(blocky); recty = 0; r.setY(recty); }
rashadbb
1

голосов
0

ответ
126

Просмотры

JavaFX - применить стиль к узлу, не затрагивая своих детей

Я хочу, чтобы отключить подсветку фокуса на ScrollPane, как это выглядит некрасиво. Мне удалось это с помощью следующих CSS: .scroll-панель {-fx-фон-цвет: прозрачный; -fx фокус-цвет: прозрачный; -fx-слабый фокус-цвет: прозрачный; } Однако, это также относится и влияние на всех детей ScrollPane, то есть кнопки внутри также не имеют фокус на первый план. Это не то, что я хочу. Как я могу применить стиль к ScrollPane только без ущерба для своих детей?
Christopher Riches
1

голосов
0

ответ
70

Просмотры

JavaFX: Нежелательные неровные линии после PerspectiveTransform ()

После выполнения преобразования Perspective на сетке (оконное с несколькими линиями в нем), то результат (специально более «дальние» линии) не является идеальным, как показано на рисунке: В настоящее время я использую «StrokeType.OUTSIDE» и его помог немного. Увеличение ширины линии не вариант, так как ближе линия будет намного толще, чем у других (ну, это перспективное изображения, в конце концов). Я отчасти понимаю, почему это происходит, но мне интересно, если есть что-то я могу сделать, чтобы избежать этого.
ihavenoidea
1

голосов
1

ответ
96

Просмотры

Ubuntu не может показать элементы графического интерфейса пользователя, разработанные с файлами .css

Я работаю в группе над проектом Java с целью разработки GUI с использованием JavaFX. Основная структура графического интерфейса завершена и он работает довольно хорошо до момента, мы использовали CSS, чтобы настроить некоторые графические детали на кнопки и текстовые поля и так далее. GUI работает без каких-либо проблем на Windows, и MAC, но когда я пытаюсь запустить его на Ubuntu, возникает проблема. нет Как только я получаю GUI и работает через Netbeans на Ubuntu, некоторые детали элементов скорректированных через .css файлы больше не отображаются. Эта проблема возникает на несколько кнопок и текстовых полей. Проект Java может быть построен и выполняется без сообщений об ошибках. Я только получить несколько предупреждений, но они не вызывают каких-либо проблем под ОС Windows или MAC. Во время сборки: Примечание: /.../.../.../.../nameOfClass.java использует или небезопасные операции. Примечание: Recompile с -Xlint: снят для деталей. Обнаружено JavaFX Ant API версия 1.3 Запуск задача из /usr/lib/jvm/jdk1.8.0_161/jre/../lib/ant-javafx.jar Предупреждения: От JDK7u25 манифеста атрибут Codebase должен использоваться для ограничения JAR перепрофилирования. Пожалуйста, установите manifest.custom.codebase свойство переопределения текущего по умолчанию незащищенного значения «*». Запуск задачи из /usr/lib/jvm/jdk1.8.0_161/jre/../lib/ant-javafx.jar Нет базы JDK. Пакет будет использовать систему JRE. Нет базы JDK. Пакет будет использовать систему JRE. JFX развертывание-скрипт: JFX развертывание: баночка: JFX перестроение: BUILD УСПЕШНОГО (общее время: 3 секунды) При работе: ВНИМАНИЕ: Загрузка FXML документ с JavaFX API версии 9.0.1 с помощью JavaFX среды исполнения версии 8.0.161 Access к .css файлов устанавливается через пути в Scenebuilder. Scenebuilder вставить путь непосредственно в .fxml файлы. Такие, как: Содержание. CSS файл: / * Для того, чтобы изменить заголовок лицензии, выберите Лицензионные заголовки в свойствах проекта. Чтобы изменить этот файл шаблона, выберите Tools | Шаблоны и откройте шаблон в редакторе. * / .Button {-fx-фон-цвет: # 007399; -fx-текст-наполнитель: #FFFFFF; -fx-тактный: #FFFFFF; } .Button: парения {-fx-фонового цвета: # 328fad; } .Button: нажать {-fx-цвет фона: # 005c7a; } Самое смешное, как только я открываю файл .fxml в scenebuilder, все отображается правильно. Но как только я запускаю GUI по Netbeans на Ubuntu, кнопка выглядит иначе, или они не показаны. Моя установка: Ubuntu 17,10 Netbeans 8.2 с Java: 1.8.0_161; Runtime: Java (TM) SE Runtime Environment 1.8.0_161-b12; JavaFX Scene Builder 9.0.1 Сложение Информация о версии 9.0.1 Java Версия: 9 + 181, Oracle Corporation Мой местный Java-версии от " Я клонировать проект с помощью мерзавца на другой ноутбук с теми же Ubuntu, Netbeans и Scenebuilder версий и проблема также происходит здесь. К сожалению, я не могу найти в логах JavaFX или что-нибудь подобное. Если кто-то имел представление о том, чтобы исправить эту ошибку, я был бы очень рад. С наилучшими пожеланиями
Jägerstolz
1

голосов
1

ответ
309

Просмотры

JavaFX ObservableList с событием обновления экстрактор не стрелять, когда он должен

Немного предыстории: Прежде чем у меня была проблема, где я имел ObservableList с экстрактором, но свойства, экстрактор слушающие были обновлены с NOT JavaFX потока. Решение, которое я придумал было создать «UI эквивалентные» классы, которые будут копировать значения исходного класса, просто обновить свои свойства на JavaFX потоке. Например, если у нас есть лицо: Person общественного класса {личная окончательное BooleanProperty взрослого; общественное лицо (булево взрослый) {this.adult = новый SimpleBooleanProperty (для взрослых); // Randomize "взрослый" значение каждые 5 секунд ListViewExtractorTest.scheduledExecutorService.scheduleAtFixedRate (() -> {this.adult.set (Math.random ()> 0,5); System.out.println ( "Обновление взрослых:" + это) ;}, 5, 5, TimeUnit.SECONDS); // Геттеры сеттеров} UI класс эквивалент будет: общественный класс PersonUI {частное лицо окончательное лицо; частный окончательный BooleanProperty взрослых; общественные PersonUI (Person человек) {this.person = человек; взрослый = новый SimpleBooleanProperty (person.isAdult ()); . Person.adultProperty () добавления слушателя ((observableValue, OldValue, новое_значение) -> {Platform.runLater (() -> this.adult.set (новое_значение));}); } // Геттеры и сеттера} Я сделал то же самое с ObservableList - создал метод, который бы добавить ListChangeListener в список источников и всякий раз, когда исходный список обновляется она будет обновлять список адресатов с UI эквивалентных классами на JavaFX нити: открытый статический ObservableList bindListContentPlatformRunLater (ObservableList srcList, функция функция, ObservableList dstList) {для (T пункта: srcList) {dstList.add (Function.apply (пункт)); } // Может быть, нужно обернуть весь в то время как цикл в Platform.runLater () // Меньше runnables, но большие изменения могут повесить UI. srcList.addListener ((ListChangeListener
ESipalis
1

голосов
0

ответ
96

Просмотры

Unable to sucessufly create an Gluon project whit Glisten Afterburner on Intelij

I attempted to create a Gluon Mobile application whit the Glisten Afterburner framework on Intelij, however once i create it i cannot even launch it. If i try to run the program i get the following error: If i try to use scene builder in any of the fxml files: My fxml code is the one generated by default: StackTrace: ApplicationCode: package com.gluon.attempt; import com.gluon.attempt.views.AppViewManager; import com.gluonhq.charm.glisten.application.MobileApplication; import com.gluonhq.charm.glisten.visual.Swatch; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Stage; public class Attempt extends MobileApplication { @Override public void init() { AppViewManager.registerViewsAndDrawer(this); } @Override public void postInit(Scene scene) { Swatch.BLUE.assignTo(scene); ((Stage) scene.getWindow()).getIcons().add(new Image(Attempt.class.getResourceAsStream("/icon.png"))); } }
João Marques
1

голосов
1

ответ
188

Просмотры

Запуск приложения JavaFX с Intellij не удалось

У меня есть проблемы в течение нескольких месяцев. У меня есть большое применение в Java 1.7 и Java FX на CentOS 6. Когда я запускать с идеей IntelliJ CE 2017.1.1, у меня есть исключение с JDK 7: Ошибка в XOpenDisplay (Java: 181803): Gtk-WARNING * *: не могу открыть дисплей: с JDK 8: "АВТ-EventQueue-0" java.lang.UnsupportedOperationException Исключение в потоке:. Невозможно открыть дисплей на com.sun.glass.ui.gtk.GtkApplication (GtkApplication.java:68) в начале, он работал с Intellij. Но один день, он не смог с этим исключением, и я не могу найти почему. Я воссоздал свое рабочее пространство в несколько раз, но безуспешно. Он работает с Eclipse, с тем же кодом. Это работает, если я копирую CLI, отображаемый в окне «запустить» в начале запущенной программы в IntelliJ в консоли. Сейчас, У меня есть экземпляр затмения, чтобы запустить приложение и я пишу код в IntelliJ. Но я хотел бы использовать только IntelliJ. Thx для вашей помощи DidierC
DidierC
1

голосов
0

ответ
51

Просмотры

Затмение JavaFX плагин отключить проверку для веб-CSS

Я использую е (Fx) Clipse плагин для затмения для моего проекта JavaFX и у меня есть некоторые веб-CSS в папке ресурсов наряду со стилями JavaFX. Этот вопрос все веб CSS свойства подчеркнуты в редакторе с предупреждением неизвестного свойства. Я попытался навигации по XText настройки, но я не смог найти решение. Как можно исключить этот файл из проверки?
Saminda Peramuna
1

голосов
1

ответ
151

Просмотры

Разделение проблемы в GUI JavaFX

Ситуацией Я разработка настольных приложений JavaFX, которая может быть описана в трех частях: данные GUI Process GUI является средством видения и редактирования данных, а процесс, ну, это процесс, который требует данных выполнять свою работу. Подумайте о GUI как больше дополнительной части, которая позволяет пользователю настроить процесс. Учитывая характер, данные должны быть доступны для записи для хранения и чтения графического интерфейса. Естественно, я пытаюсь Проблема Скажем, у меня есть класс «Человек» с членами для имени и возраста. Для того, чтобы DataBind этого объекта в целях, он должен содержать объекты собственности, представляющие данные. Это позволит сделать класс изначально несериализуемым (то есть мне нужно будет сериализовать его с дополнительным кодом). Это также своего рода раздувает класс, который чувствует себя как нарушение разделения проблем. Чтобы решить эту проблему, я нашел довольно стандартное руководство по StackOverflow. Применение MVC с JavaFX Верхнего ответа на этой странице, предполагая, используя DataModels, которые в основном наблюдаемые версии ваших моделей. Кроме того, они могут иметь «сохранить» и методы «нагрузки» для сериализации. Это похоже на лучшее решение, для чистых приложений, управляемых данными. Моя ситуация отличается, однако, потому что даже если мое приложение управляемых данных, это также очень функциональное (выполняет действия в фоновом режиме). Если я использую традиционные DataModels, мне нужно будет гарантировать, что DataModels может быть либо преобразован в ненаблюдаемых модель, или убедитесь, что у них есть способы, чтобы вернуть все части данных в не наблюдаемых объектах (например, примитивы). Функциональный модуль коды не должен признавать и иметь дело с наблюдаемыми свойствами. Для сравнения, мне очень нравится, как C # имеет свойство, которые по своей сути наблюдаемые, и очень хорошо подходит в WPF. С # подхода позволяет мне использовать данные в обоих направлениях без необходимости преобразования и из наблюдаемых (есть исключения, конечно!). Вопрос: Как я решаю между этими вариантами? Создание своих моделей наблюдаемы взглядами и сериализуемые в том же время функционируют в качестве базовых моделей с примитивным получением и установкой. Создание промежуточной стадии DataModels, которые Наблюдаемые объекты, которые представляют модели и связываются с видом. Эти объекты должны быть в состоянии принять модели как зависимость, а затем преобразовать обратно в модель (после того, как модифицированный графический интерфейс). Первый вариант меньше кода. Все это требует переходного элемент Property для каждого примитивного элемента, а также 2 методов сериализации и десериализации. Тем не менее, он чувствует, как прямое нарушение разделения проблем. Второй вариант больше кода, но он полностью отделяет необработанные данные, и графический интерфейс пользователя через посредника (DataModels). Это требует совершенно нового класса для каждого объекта, который мне нужно отобразить в представлении, с методами преобразования в и из указанного объекта! Тем не менее, он чувствует ..... «Правильный». Я ограничивающий объем вопроса между этими вариантами, чтобы соответствовать лучше с StackExchange. Тем не менее, я открыт для любых и всех новых перспектив! Вот пример кода Ниже приведен пример с datamodels класса Человек реализует Serializable {частное имя String; Строка общественного GetName () {...} общественной недействительная SetName () {... }} Класс ObservablePerson // DataModel {частное имя StringProperty; общественного ObservablePerson (Person человек) {имя = новый SimpleStringProperty (person.getName ()); } StringProperty nameProperty () {имя общественного возврата; } Общественного лицо toPerson () {...}} Вот пример без datamodels: класс Person реализует Serializable {личного переходного имени StringProperty; Строка общественного GetName () {вернуть name.getValue ();} общественного недействительными SetName (имя String) {this.name = новый SimpleStringProperty (имя); } StringProperty nameProperty () {имя общественного возврата; } // общественного недействительными сериализации () {// псевдокод записи (name.getValue ()); } Общественного недействительный Deserialize () {// имя псевдокода = новый SimpleStringProperty (ReadString ()); }} Боковые Примечания Основной целью применения является функциональный характер. Он выполняет действия в фоновом режиме. Это средство автоматизации. Таким образом, данные (и GUI) является дополнением к его функции. GUI является инструментом настройки, а не ядро-функция. Все данные в приложении является изменяемым и используются как в графическом интерфейсе пользователя и процесса. Таким образом, каждый элемент данных должен иметь возможность просмотра с графическим интерфейсом, сериализации, и используется в его самом базовом формате. не сердечнику особенность. Все данные в приложении является изменяемым и используются как в графическом интерфейсе пользователя и процесса. Таким образом, каждый элемент данных должен иметь возможность просмотра с графическим интерфейсом, сериализации, и используется в его самом базовом формате. не сердечнику особенность. Все данные в приложении является изменяемым и используются как в графическом интерфейсе пользователя и процесса. Таким образом, каждый элемент данных должен иметь возможность просмотра с графическим интерфейсом, сериализации, и используется в его самом базовом формате.
Clay07g
1

голосов
1

ответ
152

Просмотры

Материализовать Иконки не работает в браузере JavaFX

Я пытаюсь показать MaterialIcons на мой JavaFX WebBrowser с помощью webEngine, но он просто показывает описание иконы. Иконки не работает и на IE и Safari. Кто-нибудь знает, как сделать его доступным для чтения?
Kristian di Lillo
1

голосов
1

ответ
193

Просмотры

JavaFX Гистограмма Изменение цвета

Как изменить цвет гистограммы в JavaFX. Это всегда оранжевый, и я не могу понять это. У меня нет буквально никакой подсказки. Спасибо! Вот код: общественный недействительный grafikErstellenFuerAuslastungUnterEins () {окончательный CategoryAxis XAxis = новые CategoryAxis (); Окончательный NumberAxis YAxis = новые NumberAxis (); Окончательный BarChart bcMitUnterEins = новый BarChart (Xaxis, YAxis); bcMitUnterEins.setTitle ( "Traeger, умирают Halten"); // Ueberschrift дер Grafik XYChart.Series Balken = новые XYChart.Series (); balken.setName ( "Auslastung в%"); // erscheint унтер-дер-Grafik // Methode цур Berechnung дер Balkenhöhe для (INT I = 0; я <listeMitUnterEins.size (); я ++) {balken.getData () .Add (новый XYChart.Data (listeMitUnterEins.get (я) .getTraeger (). ToString () + "
Huli
1

голосов
0

ответ
70

Просмотры

Как ждать инициализацию Tableview в TornadoFX (JavaFX)?

Я работаю с JavaFX TableView, и я заметил, что если я загружаю много данных в таблицу проходит некоторое время, пока он на самом деле виден после того, как я создаю экземпляр. Моя проблема заключается в том, что я хочу, чтобы получить доступ к ScrollBar этой таблицы, но я могу только смотреть его после инициализации таблицы завершена поэтому у меня есть этот код в настоящее время: runAsync {вал начать = System.nanoTime () вар бар = fetchHorizontalScrollbar ( ) в то время как (bar.isEmpty () && System.nanoTime () - старт <10L * 1000 * 1000 * 1000) {бар = fetchHorizontalScrollbar ()}} бар .ui {бар -> // делает вещи с скроллбаром} есть способ слушать эту инициализацию вместо напряженного ожидания для ScrollBar появляться?
Hexworks
1

голосов
1

ответ
97

Просмотры

How to create objects in java fx based on user input (user inputs stuff in textfields, event is created)

Часть из приложения им решений (проект уни) включает в себя список событий, где пользователь может создать событие календаря, дать ему имя / дату / время и т.д., и есть график прокручивать список, который отображает все это. Путь Айвы получили его прямо сейчас - пользователь вводит информацию о событии в alertbox - скриншот как alertbox выглядит - то alertbox (AddEventAlertBox класс) создает объект «событие» (класс Event) с данной информацией и главным окном (EventScreen класс ) отображает событие в хронологическом списке. Однако я не уверен, как создавать события затем передать их обратно на экран событий. Вот что я думаю, что соответствующий код на вопрос. Класс события: // Список_массивы хранить все события создания защищенных список EventList = новый ArrayList (); // конструктор для инициализации значения событий, добавить объект события в список публичных событий (имя типа String, тип String, дата String, Int STARTTIME, длительность INT) {именем_события = имя; типСобытия = тип; EVENTDATE = дата; eventStartTime = начальный промежуток; eventDuration = продолжительность; eventList.add (это); певд UnsupportedOperationException (); } EventScreen Класс: Вот что он выглядит как при запуске, в разделе «события придумывают» Я хочу, чтобы добавить список событий. AddEventAlertBox класс: // Создать кнопку сохранить, чтобы создать объект события с данной информацией. Кнопка SaveButton = новая кнопка ( "Сохранить"); saveButton.setOnAction (е -> {новое событие (eventName.getText (), eventtype.getText (), eventDate.getText (), Integer.parseInt (eventStartTime.getText ()), Integer.parseInt (eventDuration.getText ()) ); window.close ();}); EVENTDATE = дата; eventStartTime = начальный промежуток; eventDuration = продолжительность; eventList.add (это); певд UnsupportedOperationException (); } EventScreen Класс: Вот что он выглядит как при запуске, в разделе «события придумывают» Я хочу, чтобы добавить список событий. AddEventAlertBox класс: // Создать кнопку сохранить, чтобы создать объект события с данной информацией. Кнопка SaveButton = новая кнопка ( "Сохранить"); saveButton.setOnAction (е -> {новое событие (eventName.getText (), eventtype.getText (), eventDate.getText (), Integer.parseInt (eventStartTime.getText ()), Integer.parseInt (eventDuration.getText ()) ); window.close ();}); EVENTDATE = дата; eventStartTime = начальный промежуток; eventDuration = продолжительность; eventList.add (это); певд UnsupportedOperationException (); } EventScreen Класс: Вот что он выглядит как при запуске, в разделе «события придумывают» Я хочу, чтобы добавить список событий. AddEventAlertBox класс: // Создать кнопку сохранить, чтобы создать объект события с данной информацией. Кнопка SaveButton = новая кнопка ( "Сохранить"); saveButton.setOnAction (е -> {новое событие (eventName.getText (), eventtype.getText (), eventDate.getText (), Integer.parseInt (eventStartTime.getText ()), Integer.parseInt (eventDuration.getText ()) ); window.close ();}); Вот что он выглядит как при запуске, в разделе «события придумывают» Я хочу, чтобы добавить список событий. AddEventAlertBox класс: // Создать кнопку сохранить, чтобы создать объект события с данной информацией. Кнопка SaveButton = новая кнопка ( "Сохранить"); saveButton.setOnAction (е -> {новое событие (eventName.getText (), eventtype.getText (), eventDate.getText (), Integer.parseInt (eventStartTime.getText ()), Integer.parseInt (eventDuration.getText ()) ); window.close ();}); Вот что он выглядит как при запуске, в разделе «события придумывают» Я хочу, чтобы добавить список событий. AddEventAlertBox класс: // Создать кнопку сохранить, чтобы создать объект события с данной информацией. Кнопка SaveButton = новая кнопка ( "Сохранить"); saveButton.setOnAction (е -> {новое событие (eventName.getText (), eventtype.getText (), eventDate.getText (), Integer.parseInt (eventStartTime.getText ()), Integer.parseInt (eventDuration.getText ()) ); window.close ();}); ParseInt (eventStartTime.getText ()), Integer.parseInt (eventDuration.getText ())); window.close (); }); ParseInt (eventStartTime.getText ()), Integer.parseInt (eventDuration.getText ())); window.close (); });
Boby Gandhi
1

голосов
0

ответ
196

Просмотры

TestFX в обезглавленный режиме на Windows,

У меня есть приложение JavaFX, и я пытаюсь запустить TestFX JUnit в обезглавленный режиме. (В нормальном режиме работает). В Gradle я настроил openjfx-монокль: собрать группу: «org.testfx», название: «openjfx-монокль», версия: «8u76-b04» В качестве аргументов, когда я начинаю JUnit я использую следующее: -Djava.awt. безголовый = верно -Dtestfx.robot = стекло -Dtestfx.headless = верно -Dprism.order = ЮЗ -Dprism.text = t2k -Dtestfx.setup.timeout = 2500 -Dheadless.geometry = 1920x1080-64 Моя ОС Windows 7 Proffesional 64 -битовый, JDK является "1.8.0_152". Я попытался изменить аргумент -Dheadless.geometry, но никаких результатов. Любая идея? Ошибка получили: java.nio.BufferOverflowException на java.nio.DirectIntBufferU.put (DirectIntBufferU.java:363) при com.sun.javafx.tk.quantum.UploadingPainter.run (UploadingPainter.java:153) в java.util .concurrent.
Trica
1

голосов
2

ответ
1.1k

Просмотры

не может использовать scenebuilder IntelliJ с jfoenix

Я создал проект JavaFX с помощью Java 9.0.4. Этот код может быть скомпилирован и работает. и я могу использовать внутренний sceneBuilder. но когда я импортировать элемент из библиотеки Jfoenix 9.0.1 Я не могу использовать sceneBuilder больше. Я получаю эту ошибку: java.lang.UnsupportedClassVersionError: COM / jfoenix / управление / JFXButton было составлено более поздней версией Java Runtime (класс версии файла 53,0), эта версия Java Runtime распознает только версии файлов классов до 52,0 также я добавил библиотеку к структуре проекта. Есть ли способ, чтобы изменить версию Java Runtime, что эта часть использует?
TheStudent
1

голосов
1

ответ
57

Просмотры

Как динамически изменять текст предупреждения?

Я пытаюсь сделать простое окно загрузки в JavaFX, и я использую информационное уведомление для этого. Вот мой код: общественное оповещение = новые оповещения (Alert.AlertType.INFORMATION); общественного недействительными drawData (javafx.event.ActionEvent ActionEvent) {alert.setHeaderText (нуль); alert.setTitle ( "Загрузка ..."); alert.show (); для (INT I = 0, я <* что-то *; я ++) {/ * некоторый код здесь * / System.out.println (я); alert.setContentText (Integer.toString (я)); } Alert.close (); }} Но это не похоже на работу. Все, что я получаю пустое окно предупреждения: Есть ли на самом деле, как я могу это исправить? Кроме того, как я игнорирую кнопку ALERT нормально?
J. Doe
1

голосов
0

ответ
62

Просмотры

JavaFX: Прерывание цикла затем обновить пользовательский интерфейс в другом потоке

Я знаю, что есть миллион вопросов о обновлении пользовательского интерфейса в JavaFX из Дифференц нити, но в моем случае я работаю только с одной сценой, и я хотел бы прервать цикл, а затем я начинаю другой поток, который будет обновлять пользовательский интерфейс. Я проверяю следующий код: Class главная: государственной статической силы основных (String [] арг) {Application.launch (арг); } @Override общественного недействительный старт (этап этапа) {stage.setTitle ( "Мой проект"); Группа корень = новая группа (); Сцена Сцена = новая сцена (корень, 800600, Color.LIGHTBLUE); Этикетка лаборатория = новый ярлык ( «Это тест»); . Root.getChildren () добавить (лаборатории); stage.setScene (сцены); stage.show (); GuiUpdate гу = новый GuiUpdate (этап, корень); INT = 0; в то время как (я {Notify (); stage.getScene () setRoot (oldRoot);.. getThread () прерывания (); }); . Root.getChildren () addAll (oldRoot, кнопка [0], кнопка [1]); stage.getScene () setRoot (корень). }}; если (Platform.isFxApplicationThread ()) {System.out.println ( "Положение 1"); runner.run (); } Еще {System.out.println ( "Положение 2"); Platform.runLater (второе место); }} Общественного Thread getThread () {возвращение нить;}} Проблема: При запуске проекта, Platform.runLater (бегун), кажется, не будет работать и заморозить приложения, потому что «основной поток» ждет Println ( "Положение 2"); Platform.runLater (второе место); }} Общественного Thread getThread () {возвращение нить;}} Проблема: При запуске проекта, Platform.runLater (бегун), кажется, не будет работать и заморозить приложения, потому что «основной поток» ждет Println ( "Положение 2"); Platform.runLater (второе место); }} Общественного Thread getThread () {возвращение нить;}} Проблема: При запуске проекта, Platform.runLater (бегун), кажется, не будет работать и заморозить приложения, потому что «основной поток» ждет
Chomusuky
1

голосов
1

ответ
50

Просмотры

Показать XML на WebView как это делает Chrome

Я хочу, чтобы показать полный XML-документ, в том числе тегов. Я попытался это: // переменная F относится к XML-файл URL URL = f.toURI () toURL ();. webEngine.load (url.toString ()); Но это показывает XML как HTML, за исключением тегов. Может кто-нибудь помочь?
Majiba
1

голосов
0

ответ
126

Просмотры

Вопрос об исполнении JavaFX TableView со сложной TableColumn

Я пытаюсь создать JavaFX TableView с «башней-форма» колоннами. Но производительность очень плохо, когда есть более 1000 столбцов в TableView. Вот мой код: общественный класс PaneDemo расширяет применение {частных TableView таблицы = новый TableView (); частная Long timeStart; частная Long timeEnd; государственной статической силы основных (String [] арг) {запуск (аргументы); } Частных статических INT getTotal (интермедиат слой) {INT всего = 0; INT начать = 1; для (INT I = 0; г <слой - 1; я ++) {начать * = 5; общая + = старт; } System.out.println ( "Общее количество столбцов:" + (всего + начинать * 5)); вернуться общей суммы; } @Override общественного недействительный старт (этап Этапа) {Сцена Сцена = новая сцена (новая группа ()); AnchorPane anchorPane = новый AnchorPane (); anchorPane.setPrefWidth (900); anchorPane.setPrefHeight (600); table.setColumnResizePolicy (TableView.UNCONSTRAINED_RESIZE_POLICY); Новая тема (() -> {timeStart = System.currentTimeMillis (); // INIT первого слой TableColumn Тест1 = новый TableColumn ( "Тест1"); TableColumn Test2 = новый TableColumn ( "Test2"); TableColumn Test3 = новый TableColumn (» Test3 "); TableColumn Test4 = новый TableColumn (" Test4 "); TableColumn test5 = новый TableColumn (" test5" ); очередь очередь = новый LinkedList ();. table.getColumns () addAll (Тест1, Test2, Test3, Test4, test5). table.getItems () добавьте ( "тест"); queue.addAll (табл. getColumns ()); INT индекс = 0; // установить слой колонки башни Int Темп = getTotal (4); в то время как (индекс <TEMP) {TableColumn корень = queue.poll (); TableColumn test1 = новый TableColumn ( "test1"); TableColumn test2 = новый TableColumn ( "test2"); TableColumn test3 = новый TableColumn ( "test3"); TableColumn test4 = новый TableColumn ( "test4"); TableColumn test5 = новый TableColumn ( "test5"); root.getColumns () addAll (test1, test2, test3, test4, test5). queue.addAll (root.getColumns ()); Индекс ++; } В то время как (! Queue.isEmpty ()) {generateCellFactory ((TableColumn) queue.poll ()); .} Table.prefHeightProperty () связываются (anchorPane.heightProperty ()); . Table.prefWidthProperty () связываются (anchorPane.widthProperty ()); . AnchorPane.getChildren () добавить (таблица); ((Группа) scene.getRoot ()) GetChildren () addAll (anchorPane)..; stage.setScene (сцены); stage.show (); Platform.runLater (() -> {timeEnd = System.currentTimeMillis (); System.out.println ( "Макет Время:" + (timeEnd - timeStart) + "мс");}); }).бежать(); } Частная пустота generateCellFactory (TableColumn колонок) {column.setCellFactory (ячейка -> {вернуть новый TableCell () {@Override защищен недействительным updateItem (String элемент, булев пустой) {супер. updateItem (пункт, пустой); SetText ( "Тест"); }}; }); }} На моем компьютере ПРЕДСТАВЛЕНИЕМ так: Всего столбцов: 780 Layout Время: 9810ms Всего столбцов: 3905 Компоновка Время: 43920ms Есть ли способ, что я могу улучшить производительность? Или какие-либо некоторые пагинация могут быть использованы на TableColumn?
Guangheng Xu
1

голосов
1

ответ
60

Просмотры

Как мне действовать в принятии моего игрока прямоугольник прыгать?

Я просто смотрю, чтобы сделать свой красный прямоугольник скачок вверх при нажатии на эту кнопку прыжка. Я не могу показаться, чтобы найти какие-либо вещи, как анимацию или даже идти, ждать определенное количество времени, а затем вернуться вниз. импорт javafx.scene.Scene; импорт javafx.stage.Stage; импорт javafx.scene.paint.Color; импорт javafx.application.Application; импорт javafx.scene *. импорт javafx.scene.control.Button; импорт javafx.event.EventHandler; импорт javafx.event.ActionEvent; импорт javafx.animation.PathTransition; импорт javafx.scene.shape *. импорт javafx.util.Duration; общественного класса GUIPractice расширяет приложения {государственной статической силы основных (String [] арг) {запуск (арг); } Общественного недействительными начала (этап primaryStage) {Экран Прямоугольник = новый прямоугольник (20, 20, 986, 500); Кнопка JumpBtn = новая кнопка ( "Jump"); JumpBtn. setLayoutX (410); JumpBtn.setLayoutY (530); JumpBtn.setMinWidth (200); JumpBtn.setMinHeight (100); Прямоугольник игрок = новый прямоугольник (450, 420, 50, 100); player.setFill (Color.RED); Путь путь = новый путь (); Я считаю, что здесь ниже, где прыжки будет идти, но единственное, что я мог понять, как получить прямоугольник, чтобы двигаться вверх на экране и не двигаться вниз. JumpBtn.setOnAction (новый EventHandler () {общественного недействительными ручка (ActionEvent е) {player.setTranslateY (-40);}}); Корневой Group = новый Group (экран, JumpBtn, игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} JumpBtn.setMinWidth (200); JumpBtn.setMinHeight (100); Прямоугольник игрок = новый прямоугольник (450, 420, 50, 100); player.setFill (Color.RED); Путь путь = новый путь (); Я считаю, что здесь ниже, где прыжки будет идти, но единственное, что я мог понять, как получить прямоугольник, чтобы двигаться вверх на экране и не двигаться вниз. JumpBtn.setOnAction (новый EventHandler () {общественного недействительными ручка (ActionEvent е) {player.setTranslateY (-40);}}); Корневой Group = новый Group (экран, JumpBtn, игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} JumpBtn.setMinWidth (200); JumpBtn.setMinHeight (100); Прямоугольник игрок = новый прямоугольник (450, 420, 50, 100); player.setFill (Color.RED); Путь путь = новый путь (); Я считаю, что здесь ниже, где прыжки будет идти, но единственное, что я мог понять, как получить прямоугольник, чтобы двигаться вверх на экране и не двигаться вниз. JumpBtn.setOnAction (новый EventHandler () {общественного недействительными ручка (ActionEvent е) {player.setTranslateY (-40);}}); Корневой Group = новый Group (экран, JumpBtn, игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} Прямоугольник игрок = новый прямоугольник (450, 420, 50, 100); player.setFill (Color.RED); Путь путь = новый путь (); Я считаю, что здесь ниже, где прыжки будет идти, но единственное, что я мог понять, как получить прямоугольник, чтобы двигаться вверх на экране и не двигаться вниз. JumpBtn.setOnAction (новый EventHandler () {общественного недействительными ручка (ActionEvent е) {player.setTranslateY (-40);}}); Корневой Group = новый Group (экран, JumpBtn, игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} Прямоугольник игрок = новый прямоугольник (450, 420, 50, 100); player.setFill (Color.RED); Путь путь = новый путь (); Я считаю, что здесь ниже, где прыжки будет идти, но единственное, что я мог понять, как получить прямоугольник, чтобы двигаться вверх на экране и не двигаться вниз. JumpBtn.setOnAction (новый EventHandler () {общественного недействительными ручка (ActionEvent е) {player.setTranslateY (-40);}}); Корневой Group = новый Group (экран, JumpBtn, игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} Я считаю, что здесь ниже, где прыжки будет идти, но единственное, что я мог понять, как получить прямоугольник, чтобы двигаться вверх на экране и не двигаться вниз. JumpBtn.setOnAction (новый EventHandler () {общественного недействительными ручка (ActionEvent е) {player.setTranslateY (-40);}}); Корневой Group = новый Group (экран, JumpBtn, игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} Я считаю, что здесь ниже, где прыжки будет идти, но единственное, что я мог понять, как получить прямоугольник, чтобы двигаться вверх на экране и не двигаться вниз. JumpBtn.setOnAction (новый EventHandler () {общественного недействительными ручка (ActionEvent е) {player.setTranslateY (-40);}}); Корневой Group = новый Group (экран, JumpBtn, игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }} игрок); Сцена Сцена = новая сцена (корень, 1024, 768); scene.setFill (Color.GREY); primaryStage.setTitle ( "GUIPractice"); primaryStage.setScene (сцены); primaryStage.show (); }}
Dannon Gilbert
1

голосов
1

ответ
325

Просмотры

пользовательский заголовок JavaFX TableView

я настройка заголовка JavaFX Tableview в. Поэтому я добавить изображение в Label. При нажатии на метку заголовка я переключить свой собственный заголовок (два подкладке). все это работает отлично. Заголовок получает автоматически изменяется так, пользовательское headerfits. Но, когда я скрыть мой пользовательский headerthe headerstays большим. Что я опять не хватает так в headershrinks? я создал MCVE, чтобы продемонстрировать мою проблему: общественный класс TableViewHeaderMCVE расширяет Application {личное окончательный Tableview стол = новый TableView (); государственной статической силы основных (String [] арг) {запуск (аргументы); } @Override общественного недействительный старт (этап этапа) {конечная корень VBox = новый VBox (); Сцена Сцена = новая сцена (корень); stage.setWidth (218); stage.setHeight (216); TableColumn ColName = новый TableColumn ( "имя"); ColName. setMinWidth (100); colName.setSortable (ложь); TableColumn colProfession = новый TableColumn ( "профессия"); colProfession.setMinWidth (100); colProfession.setSortable (ложь); . Table.getColumns () addAll (ColName, colProfession); root.getChildren () addAll (таблица). stage.setScene (сцены); stage.show (); // применить это после шоу! TableViewHeader.installMod (таблица); } Общественного статический класс TableViewHeader {государственной статической силы installMod (TableView таблица) {для (п Узел: "столбец заголовка> .label" table.lookupAll ()) {если (п InstanceOf этикетки) {новый CustomHeaderLabel ((метка) п ); }}}} Общественный статический класс CustomHeaderLabel расширяет BorderPane {защищенный Лейбл customNode = NULL; BooleanProperty расширен = новый SimpleBooleanProperty (это, "расширенный", ложь); общественный CustomHeaderLabel (конечная метка родитель) {этикетка = новая Этикетка (parent.getText ()); // пользовательские кнопки BTN кнопку MENU = новая кнопка (); btn.setGraphic (новый ярлык ( "\ u2261")); btn.setContentDisplay (ContentDisplay.GRAPHIC_ONLY); btn.setOnAction (новый EventHandler () {@Override общественного аннулируются ручка (ActionEvent ае) {System.out.println ( "Hello World");}}); TextField filterTextField = новый TextField (); filterTextField.promptTextProperty () множество ( «Введите фильтр»). setCenter (метка); setRight (БТН); setBottom (filterTextField); EventHandler toggleHeader = новый EventHandler () {@Override общественного аннулируются ручка (MouseEvent меня) {expanded.set (expanded.get (!)); }}; parent.setOnMouseClicked (toggleHeader); expanded.addListener (новый ChangeListener () {@Override общественного недействительными изменения (ObservableValue EventHandler toggleHeader = новый EventHandler () {@Override общественного аннулируются ручка (MouseEvent меня) {expanded.set (expanded.get (!)); }}; parent.setOnMouseClicked (toggleHeader); expanded.addListener (новый ChangeListener () {@Override общественного недействительными изменения (ObservableValue EventHandler toggleHeader = новый EventHandler () {@Override общественного аннулируются ручка (MouseEvent меня) {expanded.set (expanded.get (!)); }}; parent.setOnMouseClicked (toggleHeader); expanded.addListener (новый ChangeListener () {@Override общественного недействительными изменения (ObservableValue
lumo
1

голосов
0

ответ
31

Просмотры

Избегайте того, чтобы обновить все rowIndexes каждый раз, когда я вставить новую строку в середине GridPane?

Если у меня есть много строк, и я чувствую, как вставить новую в верхней части (или в любом другом месте), я тогда должен пойти и вручную увеличить поле GridPane.rowIndex, который получает утомительным довольно легко. Есть ли какой-нибудь символ, я могу поставить вместо закодированных чисел, чтобы сделать FXML понять, что они просто последовательность? ...
devoured elysium
1

голосов
1

ответ
67

Просмотры

Not able to update url and update webview

This is my project setup I'm trying to update the webview so each tab will be updated by one address bar. I cant seem to find where I'm going wrong. I'm new to javaFX. I know I have to add another change listener in there for the search button just not sure how...I cant find anything on how to do this. except one example that didnt really explain anything and the code was messy. public class Client extends Application { private Scene scene; Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); BorderPane root = new BorderPane(); Browser browseR = new Browser(); final TabPane tabs = new TabPane(); final Tab home = new Tab("Home"); final Tab newtab = new Tab("+"); HBox hbox = new HBox(); public static TextField addressBar = new TextField(); final Group group = new Group(tabs,root,hbox); //joins the borderpane and browser element together @Override public void start(Stage stage) { // create the scene stage.setTitle("Web Browser"); scene = new Scene(group,screenSize.getWidth(),screenSize.getHeight(), Color.web("#666970")); //create scene with root pane and browser pane hbox.setSpacing(10); hbox.setStyle("-fx-background-color: #FFFFFF;"); hbox.setPadding(new Insets(5, 24, 5, 12)); Button backButton = new Button(""); forwardButton.setOnAction(this::forwardButtonHandler); forwardButton.setPrefSize(25, 20); HBox.setHgrow(addressBar, Priority.ALWAYS); //addressBar.setMaxWidth(screenSize.getWidth()-200); Button searchButton = new Button("go"); searchButton.setOnAction(this::searchButtonHandler); //add all menu elements to the top of the screen hbox.getChildren().addAll(backButton, forwardButton,addressBar,searchButton); setConstraints(tabs,hbox,stage); createHomeTab(); createNewTab(); tabs.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue
Lodington
1

голосов
0

ответ
214

Просмотры

Есть ли альтернативный подход для анализа и визуализации HTML-текст в JavaFX вместо использования WebView?

Поскольку JavaFX метка не может анализировать и отображать содержимое HTML, как свинг JLabel делает, подход с использованием WebView только для анализа и визуализации простых текстов HTML звучит как использовать ракету Tomahawk, чтобы убить комара. Каждый имеет альтернативные идеи, как разобрать и сделать простой текст HTML в JavaFX, вместо того, чтобы использовать WebView? Фрагмент кода ниже показывает пример использования WebView, который кажется слишком тяжелым и сложным. импорт javafx.application.Application; импорт javafx.geometry.Insets; импорт javafx.geometry.Pos; импорт javafx.scene.Group; импорт javafx.scene.Scene; импорт javafx.scene.control.CheckBox; импорт javafx.scene.control.Spinner; импорт javafx.scene.control.SpinnerValueFactory; импорт javafx.scene.layout.HBox; импорт javafx.scene.layout.VBox; импорт javafx.scene.web.WebEngine; импорт javafx.scene.web.WebView; импорт javafx.stage.Stage; общественный класс Основного применения расширяет {@Override общественного недействительный старта (этап Стадии) {stage.setTitle ( «Stackoverflow Пример»); stage.setWidth (816); stage.setHeight (310); Сцена Сцена = новая сцена (новая группа ()); VBox корень = новый VBox (); HBox опция1 = buildLineOption ( "шарики", "синий", 1, 2); HBox опция2 = buildLineOption ( "велосипеды", "красный", 2, 3); HBox OPTION3 = buildLineOption ( "бананы", "пурпурный", 3, 4); HBox ОПЦИЯ4 = buildLineOption ( "квадратов", "апельсин", 1, 2); HBox option5 = buildLineOption ( "львы", "желтый", 2, 4); HBox option6 = buildLineOption ( "номера", "зеленый", 3, 5); HBox option7 = buildLineOption ( "буква", "белая", 1, 4); HBox option8 = buildLineOption ( "дней", "черные", 2, 5); HBox option9 = buildLineOption ( "ключи", "фиолетовый", 3, 4); . Root.getChildren () addAll (опция1, опция2, OPTION3, ОПЦИЯ4, option5, option6, option7, option8, option9); scene.setRoot (корень); stage.setScene (сцены); stage.show (); } Частные HBox buildLineOption (String ControlType, String цвет, внутр minInit, внутр maxInit) {CheckBox CheckBox = новый CheckBox (); Окончательный WebView браузер = новый WebView (); browser.setMaxWidth (450); browser.setMinWidth (450); browser.setPrefWidth (450); Окончательный WebEngine webEngine = browser.getEngine (); SpinnerValueFactory minValueFactory = новый SpinnerValueFactory.IntegerSpinnerValueFactory (1, 5, minInit); SpinnerValueFactory maxValueFactory = новый SpinnerValueFactory. IntegerSpinnerValueFactory (1, 5, maxInit); Окончательный Spinner minSpinner = новая Вертушка (); minSpinner.setValueFactory (minValueFactory); Окончательный Spinner maxSpinner = новая Вертушка (); maxSpinner.setValueFactory (maxValueFactory); HBox HBox = новый HBox (5); hBox.setAlignment (Pos.CENTER); hBox.setPadding (новые вставки (0, 5, 0, 5)); hBox.setStyle ( "- FX-фон-цвет: светло-серый"); hBox.setMaxSize (800, 30); hBox.setMinSize (800, 30); hBox.setPrefSize (800, 30); hBox.getChildren () addAll (CheckBox, браузер, minSpinner, maxSpinner). webEngine.loadContent (String.Format ( "тело {фонового цвета: светло-серого}" + "Keep количество% s% s между пределами:", цвет, цвет, ControlType)); вернуться HBOX; } государственной статической силы основных (String [] агдз) {запуск (арг);
LotoClover
1

голосов
0

ответ
166

Просмотры

JavaFX печати текста на нескольких страницах сразу для двусторонней печати

Я пытаюсь напечатать текст и несколько строк, которые я вложил в группу. В зависимости от действий пользователя, возможно, что он должен быть на нескольких страницах. Я пробовал много вещей, все мои Google ссылки на эту тему отмечены как посещенные Allready ... Моя проблема вещь с несколькими страницами .. я хотел бы сделать это без масштабирования .. Ее также возможно, что группа не является правильным вещь для него, но не знаю, что было бы лучше. Я надеюсь, что кто-нибудь может мне помочь .. я добавил короткий пример одного пути я попытался это печатает только одну страницы ... общественный класс Main расширяет Application {частный статический этап primaryStage; // ** Объявить статический Stage ** @Override общественного недействительный старт (этап primaryStage) бросает исключение {setPrimaryStage (primaryStage); Родитель корень = FXMLLoader.load (GetClass () getResource ( "sample.fxml").); primaryStage.setTitle ( "СК"); primaryStage.setScene (новая сцена (корень, 1200, 800)); primaryStage.show (); drawStuff (); } Статический открытый этап getPrimaryStage () {вернуться Main.primaryStage; } Частная пустота setPrimaryStage (стадия Стадия) {Main.primaryStage = ступень; } государственной статической силы основных (String [] агдз) {запуск (арг); } Группа [] корень = новая группа [10]; общественного недействительными drawStuff () {для (INT I = 0; я
Luke
1

голосов
0

ответ
305

Просмотры

Удалить рамку вокруг полосы прокрутки JavaFX ScrollPane когда * не * внимание

У меня странный вопрос. Я стиль прокрутка-бар моего ScrollPane в JavaFX с помощью CSS, но теперь каждый раз, когда ScrollPane находится в фокусе, граница исчезает. Однако, если нажать на кнопку за пределами области, он возвращается. Вот изображения: Нецеленаправленна Сфокусированные Здесь УС: .scroll-бар: горизонтальный .track, .scroll-бар: вертикальный .track {-fx-цвет фона: прозрачный; -fx границы цвета: прозрачный; -fx-фон-радиус: 2.0em; } .Scroll-бар: горизонтальный .increment кнопка, .scroll-бар: горизонтальный .decrement кнопка {-fx-цвет фона: прозрачный; -fx-фон-радиус: 0.0em; -fx-обивка: 0,0 0,0 10,0 0,0; } .Scroll-бар: вертикальный .track-фон, .scroll-бар: горизонтальный .track-фон {-fx-цвет фона: прозрачный; -fx-фон-вставки: 0; -fx-фон-радиус: 2em; } .полоса прокрутки: вертикальная .increment кнопка, .scroll-бар: вертикальный .decrement кнопка {-fx-цвет фона: прозрачный; -fx-фон-радиус: 0.0em; -fx-обивка: 0,0 10,0 0,0 0,0; } .Scroll-бар .increment-стрелка, .scroll-бар .decrement-стрелка {-fx-форма: "«; -fx-обивка: 0.15em 0,0; } .Scroll-бар: вертикальный .increment-стрелка, .scroll-бар: вертикальный .decrement-стрелка {-fx-форма: "«; -fx-прокладка: 0,0 0.15em; } .Scroll-бар: горизонтальный .thumb, .scroll-бар: вертикальный .thumb {-fx-фоновый цвет: #dddddd; -fx-фон-вставки: 2.0, 0.0, 0.0; -fx-фон-радиус: 2.0em; } .Scroll-бар: горизонтальный .thumb: парить, .scroll-бар: вертикальный .thumb: парения {-fx-цвет фона: # 9e9e9e; -fx-фон-вставки: 2.0, 0.0, 0.0; -fx-фон-радиус: 2.0em; } .Scroll-бар {-fx-цвет фона: прозрачный; -fx-фон-радиус: 2em; -fx фокус-цвет: прозрачный; -fx-слабый фокус-цвет: прозрачный; } .Scroll-бар: вертикальный: сосредоточены {-fx-цвет фона: прозрачный; }
Nat
1

голосов
0

ответ
96

Просмотры

Сервис Loader не находит какие-либо реализации при упаковке в банке

У меня есть ход проекта JavaFX на Java 10, который прекрасно работает в IntelliJ, что, ко мне, значит, что я упаковка проект мульти-модуль неправильно. Я попытался найти исправление, но я не нашел ни одного. Проблема я «успешно» создать .jar, как я не получаю ошибки из пакета Maven, но когда я правой кнопкой мыши на него и бежать, моя программа вылетает, потому что не находит услуг и, следовательно, не может продолжать нормально операция. Пример Код ниже выходные реализаций при запуске с помощью IntelliJ, но NO реализаций, когда не запускать через мой .jar ServiceLoader погрузчик = ServiceLoader.load (Db.class); если {log.error ( "NO Реализации") (loader.iterator () hasNext (!).); } Еще {для (Db DB: загрузчик) {log.error ( "Реализация"); }} Сверху ПОМ. Mojo Exec-Maven-плагин 1.6.0 startup.App Maven сборки-плагин банка-с-зависимостей пакета одного startup.App банка-с-зависимостей программа ложный ложный Я действительно не уверен, что я делаю неправильно. Может кто-то указать мне верное направление? App Maven сборки-плагин банка-с зависимостями одинарной startup.App банки-с-зависимостями программа ложного ложным Я действительно не уверен, что я делаю неправильно. Может кто-то указать мне верное направление? App Maven сборки-плагин банка-с зависимостями одинарной startup.App банки-с-зависимостями программа ложного ложным Я действительно не уверен, что я делаю неправильно. Может кто-то указать мне верное направление? App банка-с зависимостями программы ложного ложным Я действительно не уверен, что я делаю неправильно. Может кто-то указать мне верное направление? App банка-с зависимостями программы ложного ложным Я действительно не уверен, что я делаю неправильно. Может кто-то указать мне верное направление?
Hypnic Jerk

Просмотр дополнительных вопросов