我正在为一所需要GUI的学校项目工作,所以我决定学习JavaFX。使用Swing,您可以像控制器
一样在控制器中构建一个guipublic class Controller
{
public Controller ()
{
// insert code
}
}
并在构造函数中调用它
public class Constructor
{
public static void main(String[] args)
{
Controller GUI = new Controller();
}
}
我一直试图在JavaFX上使用这个设置,几乎没有运气,甚至可能吗?
答案 0 :(得分:1)
当您运行JavaFX应用程序时,您必须扩展Main类中的Application
类:
import javafx.application.Application;
import javafx.stage.Stage;
public class Main extends Application{ //extends Application
public Main() {
launch(args); //start window
}
@Override
public void start(Stage primaryStage) throws Exception {
//code here
}
}
现在您必须覆盖start
方法。在此start
方法中,您将舞台primaryStage
作为参数,这是您的窗口。要调用start
方法,您必须在main方法中调用:launch(args)
。
现在,您可以使用start
方法添加代码。
当您在另一个类(如Contoller)中创建GUI时,您有不同的方法来执行此操作。
首先,我们在构造函数中查看舞台。要显示舞台,首先需要将场景设置为舞台:
stage.setScene(Scene scene);
要创建舞台,您必须在构造函数中添加Parent
对象
new Scene(Parent root);
一些父对象是Group
和Region
Parent
的其他子类包括:Pane
,GridPane
,BorderPane
,Chart
,TableView
,ListView
和更多。
我们从Start方法开始有一个舞台,所以我们现在需要一个Scene
我们可以在start方法中创建它并将其添加到舞台:
Scene scene = new Scene();
primaryStage.setScene(scene);
此代码无法运行,因为Scene()
需要Parent
类型的参数
现在我们可以创建我们的Controller类,在其中我们使用所有GUI组件创建Parent对象。为此,我们在Controller类中创建一个Parent对象(在本例中为BorderPane):
public class Controller {
private final BorderPane borderPane;
public Controller() {
borderPane = new BorderPane();
//gui code here
}
}
现在我们可以在Controller类中创建我们的gui Finnaly我们在Controller类中创建了一个函数来为我们的gui获取这个Borderpane:
public Pane getParentObject(){
return borderPane;
}
在我们的start
方法中,我们现在将此Parent对象设置为Scene:
Controller controller = new Controller();
Scene scene = new Scene(controller.getParentObject());
primaryStage.setScene(scene);
primaryStage.show();
最后我们只需要展示我们的舞台。
我建议你用JavaFx搜索一些教程,在互联网上有一堆好的视频或阅读教程
我希望我能帮到你