标签: javafx-8

如何进行TextArea拉伸以填充内容,在过程中扩展父级?

所以我有一个TextArea,当用户将段落粘贴到其中,或者只是在其中写入时,我希望它垂直展开以显示所有可用的文本.即不要在文本字段本身使用滚动条...就像许多网页上发生的情况一样.包括我自己在内的许多用户不喜欢被迫在一个小窗口中进行编辑.究竟Facebook状态更新框如何工作.

我试过了

myTextArea.autoSize()
Run Code Online (Sandbox Code Playgroud)

裹着一个

myTextArea.textProperty().addListener(new ChangeListener()....);

但这不起作用.我认为它很高兴自动调整到目前的大小.

左,右和顶部锚点设置为它的父级AnchorPane.我尝试了底部连接而没有连接.理想情况下,我希望随着textarea的增长而增长锚定窗格.

我不介意阅读TextProperty并计算我自己设置的触发器大小......但如果已经有最佳实践,这似乎是一种hacky方法.javafx的属性和子对象的数量是令人畏惧的,这似乎是一个在这里提出问题的好点,而不是试图弄清楚字体/段落占用了多少像素.

更新:

所以我想也许我是在思考它,而我所要做的就是关掉滚动条,剩下的就会发生.唉,寻找"滚动","垂直","vbar"的可用字段和方法,我找不到任何可以使用的东西.ScrollTopProperty看起来像是其他东西.

javafx-2 javafx-8

17
推荐指数
2
解决办法
2万
查看次数

javafx 8兼容性问题 - FXML静态字段

我设计了一个javkx应用程序在jdk 7中工作正常.当我尝试在java 8中运行它时,我得到以下异常:

javafx.fxml.LoadException: 
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2595)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3230)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3191)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3164)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3140)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3132)


Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Root cannot be null
    at javafx.scene.Scene.<init>(Scene.java:364)
    at javafx.scene.Scene.<init>(Scene.java:232)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:204)
    at javafx.concurrent.EventHelper.fireEvent(EventHelper.java:219)
    at javafx.concurrent.Task.fireEvent(Task.java:1357)
    at javafx.concurrent.Task.setState(Task.java:720)
    at javafx.concurrent.Task$TaskCallable$2.run(Task.java:1438)
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
    at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
    at java.lang.Thread.run(Thread.java:744)
Run Code Online (Sandbox Code Playgroud)

我发现原因是在控制器类的initialize方法中我无法在任何静态组件中使用内置方法.(例如:staticMyTextField.setText()导致java …

java java-7 java-8 javafx-2 javafx-8

16
推荐指数
1
解决办法
9447
查看次数

为什么Platform.runLater不检查它当前是否在JavaFX线程上?

使用JavaFX 8时,我们需要通过GUI运行与GUI的交互Platform.runLater,否则如果从另一个线程运行它们将抛出异常.

但是执行Platform.runLater永远不会检查它当前是否在JavaFX线程上.

我写了以下方法:

public static void runSafe(final Runnable runnable) {
    Objects.requireNonNull(runnable, "runnable");
    if (Platform.isFxApplicationThread()) {
        runnable.run();
    }
    else {
        Platform.runLater(runnable);
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以确保它永远不会在非fx应用程序线程上运行.

是否有任何理由认为默认实现不会发生这种短路?

java javafx javafx-8

16
推荐指数
2
解决办法
5255
查看次数

Ubuntu,JavaFX,Java运行时环境检测到致命错误

我已经安装了ubuntu 14.04.02 x64,oracle jdk 1.8.4并且我尝试运行JavaFX8项目但是我在eclipse中得到了这个消息(不是每次都是这样):

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f69a19a4f78, pid=7035, tid=140090187572992
#
# JRE version: Java(TM) SE Runtime Environment (8.0_40-b25) (build 1.8.0_40-b25)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.40-b25 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x6c3f78]  jni_invoke_nonstatic(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x38
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, …
Run Code Online (Sandbox Code Playgroud)

java eclipse ubuntu javafx-8

16
推荐指数
1
解决办法
1638
查看次数

实现JavaFX应用程序自动更新功能

我即将编写一个新的跨平台应用程序,我选择JavaFX,主要是因为它丰富的UI库(标准和第三方)和它的本机数据绑定功能.我的应用程序将通过本机打包部署,因为缺少PPAPI Java插件(Chrome将停止Chrome 42中的NPAPI,现在处于测试阶段),这会阻止Chrome用户使用WebStart,并且因为更"经典"用户体验,因此WebStart和自动更新不在桌面上.

方案如下:

  1. 应用程序启动并检查更新
  2. 如果找到更新,请下载它们并将它们放在临时文件夹中
  3. 在应用程序关闭时,将新下载的JAR文件写入旧文件
  4. 自动重启更新的应用程序

然而,在我的脑海中出现了一些问题(最初这两个问题,但我可以在我有更多时更新这个问题):

  • 这样做是否安全?如果我覆盖应用程序生命周期中已经使用过的一些JAR,我是否冒险以某种方式让JVM变得疯狂?
  • 我很难找到一种方法来自动重启我的JavaFX应用程序.它甚至可能吗?

谢谢大家的帮助.

java javafx auto-update javafx-8

16
推荐指数
1
解决办法
6684
查看次数

你能为travis ci指定小的jdk版本吗?

是否可以为Travis上运行的作业指定JDK的次要版本?我有一个失败的JavaFX项目,因为JDK 1.8.0_31用于执行构建,因为项目使用了一些仅在Java 1.8.0_40(特别是Alert和Spinner)中提供的类.

目前我的.travis.yml文件如下所示:

language: java

jdk:
  - oraclejdk8
Run Code Online (Sandbox Code Playgroud)

这是一个失败的构建链接,以防它有用.

travis-ci javafx-8

16
推荐指数
2
解决办法
2153
查看次数

System.getProperty("line.separator")之间的区别; 和"\n"?

在使用Java FX开发GUI时,我似乎使用System.getProperty("line.separator")获得了不同的结果; 在写入文件或从互联网上获取数据时写入"\n".基本上有什么区别?

java file-handling javafx-8

16
推荐指数
3
解决办法
3万
查看次数

如何在JavaFX中监听Stage的resize事件?

我想在表单的resize事件(Scene或者Stage不管它是什么)上执行一些功能.

但是如何在JavaFX中检测表单的resize事件?

java javafx properties listener javafx-8

16
推荐指数
1
解决办法
2万
查看次数

使用JDK 11+运行JavaFX应用程序

如果我理解Oracle的公告,JavaKX将不会从JDK 11开始包含在JDK中,并且只能作为OpenJFX使用.

作为软件开发人员,我必须采取哪些步骤才能使用JDK 11+运行我的JavaFX应用程序?有什么好的adivce吗?将通过Gradle提供OpenJDK吗?

java javafx javafx-8 openjfx

16
推荐指数
1
解决办法
1万
查看次数

Kotlin 与 JavaFXPorts 的兼容性

我想用JavaFXPorts和 Kotlin 代码构建一个 JavaFX And​​roid 应用程序。是否可以在 JavaFXPorts 项目中使用 Kotlin?这是我的示例 Gradle(版本 5.6.4)项目:

注意:此代码的问题在于 Kotlin 运行时...有没有办法将所有内容捆绑在可执行 Jar 和 Apk 中?

.
??? app
?   ??? src
?   ?   ??? android
?   ?   ?   ??? AndroidManifest.xml
?   ?   ??? main
?   ?       ??? kotlin
?   ?           ??? com.example
?   ?               ??? App.kt
?   ??? build.gradle.kts
??? gradle
?   ??? wrapper
?       ??? gradle-wrapper.jar
?       ??? gradle-wrapper.properties
??? build.gradle.kts
??? gradlew
??? gradlew.bat
??? settings.gradle.kts
Run Code Online (Sandbox Code Playgroud)

./settings.gradle.kts

pluginManagement {
    repositories {
        gradlePluginPortal()
        jcenter() …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin javafx-8 javafxports

16
推荐指数
1
解决办法
247
查看次数