Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用文本字段更新标签时出现奇怪的行为(JavaFX8中可能存在错误)?_Java_Javafx - Fatal编程技术网

使用文本字段更新标签时出现奇怪的行为(JavaFX8中可能存在错误)?

使用文本字段更新标签时出现奇怪的行为(JavaFX8中可能存在错误)?,java,javafx,Java,Javafx,抱歉,我没有找到更好的标题来描述我的问题: 我想用TextField的值更新JavaFX标签 在某个星座中,已更新的值只有在我调整窗口大小或单击包含我的标签和我的文本字段的GridPane外部时才会显示 一旦我这样做了,值将立即更新 以下FXML中的每个元素似乎都很重要: <?xml version="1.0" encoding="UTF-8"?> <?language javascript?> <?import javafx.scene.control.*?>

抱歉,我没有找到更好的标题来描述我的问题:
我想用
TextField
的值更新JavaFX标签

在某个星座中,已更新的值只有在我调整窗口大小或单击包含我的标签和我的
文本字段的
GridPane
外部时才会显示
一旦我这样做了,值将立即更新

以下FXML中的每个元素似乎都很重要:

<?xml version="1.0" encoding="UTF-8"?>
<?language javascript?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <fx:script> function updateLabel() { label.setText(textfield.getText()); } </fx:script>

    <GridPane>
        <TextField fx:id="textfield" onKeyReleased="updateLabel()" />
        <Label fx:id="label" text="Just type..." GridPane.columnIndex="1" />
        <DatePicker GridPane.columnIndex="2" />
    </GridPane>
    <!-- a ScrollPane containing a TableView containing a TableColumn -->
    <ScrollPane><TableView><columns><TableColumn/></columns></TableView></ScrollPane>
</VBox>
这是一个(已知的)错误吗?还是我在JavaFX中缺少了缓存策略之类的东西

/opt/java8/bin % ./java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
/opt/java8/bin % uname -a       
Linux venus 3.15.7-1-ARCH #1 SMP PREEMPT Mon Jul 28 20:06:17 CEST 2014 x86_64 GNU/Linux

因为标签通常是静态的,所以您可能需要在舞台上调用repaint。您可以将其添加到fxml中提到的更新标签方法中吗?

适用于我(OS X+)。如果javascript函数被标签文本的绑定替换为:
text=“${textfield.text}”
.Yes,也可以使用。同样的问题。我的操作系统是Win8。Java版本。1.8.0. 解决办法很简单。只需将
TextField
的文本属性绑定到
Label
的文本属性:
TextField.textProperty().bindBidirectional(Label.textProperty())感谢您的回复!事实上,这个例子的解决方案很容易;但在我的程序的非简化版本中,我在文本字段中输入了一个时间,并在标签中添加了8h-因此简单的绑定是不够的。我还将日期选择器放置在GridView之外-这甚至可以解决实际应用程序中的问题。我报告了一个错误:这似乎更像是一个注释,而不是实际答案,因为它在问OP他的密码
/opt/java8/bin % ./java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
/opt/java8/bin % uname -a       
Linux venus 3.15.7-1-ARCH #1 SMP PREEMPT Mon Jul 28 20:06:17 CEST 2014 x86_64 GNU/Linux