如何使用eclipse和场景生成器在java中更改标签文本?
我正在尝试使用eclipse和场景生成器创建一个“Hello World”如何使用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
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仅用于文本字段,如果您不使用文本字段,您可以删除它。