我有一个带FXML的JavaFX 2.0应用程序.我希望在调整带有应用程序的窗口时调整组件(TextFields,ComboBoxes,layouts等)的大小.所以...
使用JavaFX构建GUI应用程序时,您会注意到API中的某些类已经实现了属性.例如,
javafx.scene.shape.Rectangle类包含的属性arcHeight,arcWidth,height,width,x,和y.对于这些属性中的每一个,将存在与先前描述的约定匹配的对应方法.例如getArcHeight(),setArcHeight(double),arcHeightProperty(),它们共同表明(对开发人员和工具)给定的属性存在.*
要将监听器添加到舞台,我必须执行以下操作:
stage.resizableProperty().addListener(new ChangeListener<Boolean>(){
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean arg2){
throw new UnsupportedOperationException("Not supported yet.");
}
});
Run Code Online (Sandbox Code Playgroud)所以有两个问题:
那么,我该如何解决我的问题呢?
UPD.关于Scene Builder到Sergey Grinev:当我在我的组件上使用 Ctrl + K(告诉它占据其父组件的整个区域)时 - 一切正常.
但是如果我想告诉我的组件占据50%的面积呢?例如,我有一个带有两个VBox的标签.标签的宽度为100px.Vbox的宽度分别为50px.VBox1的x1 = 0,x2 = 50,VBox2的x1 …
在使用JavaFX(Java8)工作一段时间之后,我发现Properties的概念非常有用,允许使用bean兼容变量绑定以使用计算树更新更改,例如:
class Person {
StringProperty name;
...
}
Run Code Online (Sandbox Code Playgroud)
Person owner;
Person human;
owner.name().bind(human.name());
Run Code Online (Sandbox Code Playgroud)
这允许将GUI控件绑定到"模型",以自动更新更改.
所以我也开始Property<T>在模型中使用该类(我的数据对象正在进行我的功能操作).但JavaFX是一个单线程GUI实现,只有在JavaFX线程中完成时,才允许设置链接到某些GUI控件的属性.否则将抛出异常:
Exception in thread "Thread-5" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-5
Run Code Online (Sandbox Code Playgroud)
如果我现在开始编写多线程代码,我终于无法使用这些属性,即使我愿意.我无法承担将Platform.runLater()调用中的每个更改封装到JavaFX线程中的能力.
为什么JavaFX不提供线程安全的Property-Binding?(或者是吗?)
我即将编写一个新的跨平台应用程序,我选择JavaFX,主要是因为它丰富的UI库(标准和第三方)和它的本机数据绑定功能.我的应用程序将通过本机打包部署,因为缺少PPAPI Java插件(Chrome将停止Chrome 42中的NPAPI,现在处于测试阶段),这会阻止Chrome用户使用WebStart,并且因为更"经典"用户体验,因此WebStart和自动更新不在桌面上.
方案如下:
然而,在我的脑海中出现了一些问题(最初这两个问题,但我可以在我有更多时更新这个问题):
谢谢大家的帮助.
我使用的是Java 8.我有工具栏和按钮.
我想实现以下内容:
怎么做通过CSS?
嘿,社区我想知道是否有可能创建一个程序,允许用户从硬盘驱动器(桌面,文档文件夹,视频文件夹)的任何位置拖动文件,并将其放入程序的窗口.
我正在创建一个媒体播放器,我希望能够通过将MP4拖放到窗口中来播放视频.我是否需要将文件存储在变量中,或者只将文件的位置存储到变量中.此外,重要的是我保持对跨平台的支持.
我正在使用JavaFx与java 7更新79 jdk.
提前致谢.
我想在表单的resize事件(Scene或者Stage不管它是什么)上执行一些功能.
但是如何在JavaFX中检测表单的resize事件?
我正在使用JavaFX Gradle插件来构建我的JavaFX应用程序.是否可以在完成的安装程序中添加多个开始菜单项?
我已按照本指南将 JavaFX 设置到 Linux 机器上。首先我已经安装了 Java 11
asus@asus-pc:/usr/share/openjfx/lib$ java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu219.04.1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu219.04.1, mixed
mode, sharing)
asus@asus-pc:/usr/share/openjfx/lib$
Run Code Online (Sandbox Code Playgroud)
然后我从命令安装了 OpenJFX sudo apt-get install openjfx
asus@asus-pc:/usr/share/openjfx/lib$ ls
javafx.base.jar javafx.graphics.jar javafx.swing.jar
javafx.controls.jar javafx.media.jar javafx.web.jar
javafx.fxml.jar javafx.properties src.zip
asus@asus-pc:/usr/share/openjfx/lib$
Run Code Online (Sandbox Code Playgroud)
然后在 Eclipse 中创建了一个库。
然后我将它包含到我的 java 项目中。我尝试运行此代码:
package se.danielmartensson.start;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application{
/*
* Start the start(Stage front)
*/
public …Run Code Online (Sandbox Code Playgroud) javafx ×10
java ×7
java-8 ×2
javafx-8 ×2
auto-update ×1
css ×1
fxml ×1
gradle ×1
java-7 ×1
javafx-1 ×1
javafx-2 ×1
listener ×1
media-player ×1
properties ×1
scenebuilder ×1
windows ×1