2016-07-25 109 views
-1

我使用GridPane作为布局Main,但是当我在我的代码添加Button像...显示这种类型的错误..JavaFX的错误:不兼容的类型:ContentDisplay不能转换到VPOS

Incompatible types: ContentDisplay cannot be converted to VPos 

我的控制器和 Main类

public class Main extends Application 
{ 

    public static void main(String[] args) 
    { 
     Application.launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) 
    { 

     GridPane grid =new GridPane(); 

     grid.setStyle("-fx-background-color: black;"); 
     Button b1=new Button(); 
     grid.setGridLinesVisible(true); 
     grid.setConstraints(new Button("Check"),3,4,1,2,LEFT,CENTER,Priority.SOMETIMES,Priority.SOMETIMES); 
     grid.add(new Button ("like"), 2, 4); 
     Scene scene =new Scene(grid); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 
+0

请分享更多的细节(FXML +控制器) – oszd93

+0

请帮我@ oszd93 – kashem

回答

0

你已添加静态导入为ContentDisplay.CENTER。因此,在这一行中使用:

grid.setConstraints(new Button("Check"),3,4,1,2,LEFT,CENTER,Priority.SOMETIMES,Priority.SOMETIMES); 

但是这种方法需要VPos,这是不可转让的ContentDisplay,这就是为什么这个不能编译。

您可以通过更改导入的类来简单地修复此导入,但我不建议使用静态导入,因为它会使代码难以阅读(您必须检查导入以了解成员来自哪里) 。

我建议您输入HPosVPos并改为使用此代码。

此外setColumnConstraints是一个static方法,不应使用变量引用。 (这没有错,但这是不好的做法。)作为static方法,这不会将Button添加为grid的子项。除了设置约束之外,还需要执行此操作。

Button button = new Button("Check"); 
GridPane.setConstraints(button, 
         3, 4, 
         1, 2, 
         HPos.LEFT, VPos.CENTER, 
         Priority.SOMETIMES, Priority.SOMETIMES); 

grid.getChildren().add(button); 
+0

感谢您的帮助@法比安 – kashem

相关问题