Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
如何使用eclipse和场景生成器在java中更改标签文本?_Java_Eclipse_Javafx_Scenebuilder - Fatal编程技术网

如何使用eclipse和场景生成器在java中更改标签文本?

如何使用eclipse和场景生成器在java中更改标签文本?,java,eclipse,javafx,scenebuilder,Java,Eclipse,Javafx,Scenebuilder,我正在尝试使用eclipse和场景生成器创建一个“Hello World” package lj.HelloWorld; import java.io.IOException; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.stage.Stage; import

我正在尝试使用eclipse和场景生成器创建一个“Hello World”

package lj.HelloWorld;
import java.io.IOException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;

public class HelloWorld extends Application {
    private Stage primaryStage;
    private BorderPane rootLayout;

@Override
public void start(Stage primaryStage) {
    this.primaryStage = primaryStage;
    this.primaryStage.setTitle("AddressApp");

    initRootLayout();
}

/**
 * Initializes the root layout.
 */
public void initRootLayout() {
    try {
        // Load root layout from fxml file.
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(HelloWorld.class.getResource("rootHelloWorld.fxml"));
        rootLayout = (BorderPane) loader.load();

        // Show the scene containing the root layout.
        Scene scene = new Scene(rootLayout);
        primaryStage.setScene(scene);
        primaryStage.show();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
// my attempt to refer to my label object in scenebuilder.
@FXML
private Label lblOutput;

@FXML
private void handleClick(ActionEvent event) {
    lblOutput.setText("This");
}
}
这是我的fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane prefHeight="200.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <center>
      <Pane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
         <children>
            <Button fx:id="btnClick" layoutX="98.0" layoutY="14.0" mnemonicParsing="false" text="Click Me" />
            <Label fx:id="lblOutput" layoutX="167.0" layoutY="18.0" text="1231231" />
         </children>
      </Pane>
   </center>
</BorderPane>

我只想知道如何引用标签并将其文本更改为“Hello World”。
PS:我来自vb.net学习java。我试着在谷歌上寻找一个Hello World示例,但有些网站已经关闭,而其他网站对我来说太复杂了。就像ch.makery教程一样。

您可以尝试从标签实例引用,例如:
lbl.setText(“你好世界”)

您需要一个控制器类

package lj.HelloWorld;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.text.Text;
 public class FXMLDocumentController {

@FXML private Label lblOutput;

@FXML protected void handleButtonAction(ActionEvent e){
lblOutput.setText("Hello World");
}
}
并将控制器类告知您的XML

 <BorderPane  fx:controller="lj.HelloWorld.FXMLDocumentController"
  <Button fx:id="btnClick" layoutX="98.0" layoutY="14.0" mnemonicParsing="false"    text="Click Me"
onAction="#handleButtonAction"/>

他使用的不是Swing,而是JavaFX。世上没有一件事像杰拉贝里那样认为它很好!!不是真的。正如您在代码中看到的,他已经完成了lbl.setText。。。但问题是如何将单击链接到处理程序。因此,解决方案是控制器类,而不是setText调用(您更快了:)@YinYangKim,您可以创建控制器类,并将它们与场景生成器链接到场景。在那里,您可以转到按钮和标签的代码窗格,可以将ID链接到组件,还可以将HandleButtoAction之类的处理程序链接到按钮。实际上,您并不需要ActionEvent。您可以创建任何要通过单击执行的方法。我得到一个
javafx.fxml.LoadException:/C:/Users/Kim/Documents/Workspace/Learning%20Java/bin/lj/HelloWorld/rootHelloWorld.fxml:8
错误。如果我读对了,错误指向
,我在错误日志
的底部也发现了这个错误,原因是:java.lang.ClassNotFoundException:lj.HelloWorld.FXMLDocumentController
他找不到控制器类。你是否在同一个项目中创建了一个名为FXMLDocumentController的新类,该类位于包lj.HelloWorld中?该死,错过了“创建一个新类”部分,对不起。我只是试着覆盖我的HelloWorld类。现在可以了。谢谢,谢谢你的指导。但是有一个问题,这是什么
import javafx.scene.text.text?在我的项目中,它被下划线为“未使用”。javafx.scene.text.text仅用于文本字段,如果您不使用文本字段,您可以删除它。