如果需要从Main类调用Stage,如何在Class文件上拆分JavaFX节点?

时间:2017-08-10 18:51:09

标签: java javafx

我真的很喜欢我可以从main方法调用类/对象。这样我就不会在main方法中使用完整的代码(这不会真的像对象编程一样)。

现在我有一个使用JavaFX绘制一条线的简单代码。该行是一个节点,位于场景内。但这一切都在主要方法中。

我的主要课程名为示例。它包含整个代码

我试过了:

public static LineClass extends Example

然后我确实在那里放了适当的代码。编译器没有让我编译它因为需要从main方法调用launch()。然后我做了编译器要求我做的事情,但它只会发现更多错误。

我的代码(工作时):

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.shape.Line; 
import javafx.stage.Stage;  

public class DrawingLine extends Application{ 
   @Override 
   public void start(Stage stage) { 
      //Creating a line object 
      Line line = new Line(); 

      //Setting the properties to a line 
      line.setStartX(100.0); 
      line.setStartY(150.0); 
      line.setEndX(500.0); 
      line.setEndY(150.0); 

      //Creating a Group 
      Group root = new Group(line); 

      //Creating a Scene 
      Scene scene = new Scene(root, 600, 300); 

      //Setting title to the scene 
      stage.setTitle("Sample application"); 

      //Adding the scene to the stage 
      stage.setScene(scene); 

      //Displaying the contents of a scene 
      stage.show(); 
   }      
   public static void main(String args[]){ 
      launch(args); 
   } 
} 

如何为更多类分割代码(假设每个类都有自己的.class文件)?我的目标是在不同的.class文件中使用Line对象/节点的JavaFX代码(图形),而不是在main方法中使用所有代码以避免混乱。提前谢谢。

1 个答案:

答案 0 :(得分:1)

只需创建另一个具有所需功能的类,并从start()实例化它。

import javafx.scene.Group ;
import javafx.scene.Parent ;
import javafx.scene.shape.Line ;

public class LineClass {

    private final Group root ;

    public LineClass() {

        //Creating a line object 
        Line line = new Line(); 

        //Setting the properties to a line 
        line.setStartX(100.0); 
        line.setStartY(150.0); 
        line.setEndX(500.0); 
        line.setEndY(150.0); 

        root = new Group(line); 
    }

    public Parent getView() {
        return root ;
    }
}

然后

import javafx.application.Application ;
import javafx.scene.stage.Stage ;
import javafx.scene.Scene ; 

public class DrawingLine extends Application{ 
   @Override 
   public void start(Stage stage) { 

      LineClass lc = new LineClass();

      //Creating a Scene 
      Scene scene = new Scene(lc.getView(), 600, 300); 

      //Setting title to the scene 
      stage.setTitle("Sample application"); 

      //Adding the scene to the stage 
      stage.setScene(scene); 

      //Displaying the contents of a scene 
      stage.show(); 
   }      
   public static void main(String args[]){ 
      launch(args); 
   } 
}