2015-10-04 3 views
0

Я пытаюсь объединить 3 функции в один класс JavaFX. Моя первая функция показывает «ДОБРО ПОЖАЛОВАТЬ В JAVA» по кругу. Вторая отображает матрицу 10x10 случайных 1 и 0. Третий показывает смайлик. Они должны отображаться один за другим в одной панели. У меня есть первая и третья функции, но матрица меня отбрасывает. Хотя все должно находиться в одной панели для отображения в одном и том же окне графического интерфейса (на одного профессора), я не вижу, как еще я мог бы сделать эту матрицу, кроме создания gridPane. Он отлично отображается без ограничений по размеру, но затем он занимает весь экран, а мои другие 2 функции не видны. Когда я добавляю ограничения, он становится маленьким, а числа не видны. Я не знаю, как я могу это исправить. Кто-то может помочь?Комбинация 3 функций JavaFX в один класс в одном окне GUI

 Pane pane = new Pane(); 

     // Create a circle and set its properties 
     Circle circle = new Circle(); 
     circle.setCenterX(100); 
     circle.setCenterY(100); 
     circle.setRadius(50); 
     circle.setStroke(null); 
     circle.setFill(null); 
     pane.getChildren().add(circle); // Add circle to the pane 

     //Display WELCOME TO JAVA with the text forming a circle 
     int i = 0; 
     String phrase = "WELCOME TO JAVA "; 
     double degree = 360/phrase.length(); 
     for (double degrees = 0; i < phrase.length(); i++, degrees += degree) { 
      double pointX = circle.getCenterX() + circle.getRadius() * 
       Math.cos(Math.toRadians(degrees)); 
      double pointY = circle.getCenterY() + circle.getRadius() * 
       Math.sin(Math.toRadians(degrees)); 
      Text letter = new Text(pointX, pointY, phrase.charAt(i) + ""); 
      letter.setFill(Color.BLACK); 
      letter.setFont(Font.font("Times New Roman", FontWeight.BOLD, 20)); 
      letter.setRotate(degrees + 90); 
      pane.getChildren().add(letter); } 

     //Create a 10x10 matrix of 1s and 0s 
     GridPane pane2 = new GridPane(); 
     pane2.setHgap(1); 
     pane2.setVgap(1); 

     Button[][] matrix; 

     int length = 10; 
     int width = 10; 

     ArrayList<TextField> textFields = new ArrayList<>(); 
     for (int y = 0; y < length; y++) { 
      ColumnConstraints colConst = new ColumnConstraints(); 
      colConst.setPercentWidth(10); 
      pane2.getColumnConstraints().add(colConst); 
      for (int x = 0; x < width; x++) { 
       RowConstraints rowConst = new RowConstraints(); 
       rowConst.setPercentHeight(10); 
       pane2.getRowConstraints().add(rowConst); 
       Random rand = new Random(); 
       int random1 = rand.nextInt(2); 
       TextField textf = new TextField(); 
       textf.setText("" + random1); 
       textf.setPrefSize(15, 15); 
       pane2.setRowIndex(textf, x); 
       pane2.setColumnIndex(textf, y); 
       pane2.getChildren().add(textf); 
      }} 

       //Create a smiley face 
       Circle circle2 = new Circle(); 
       circle2.setCenterX(600.0f); 
       circle2.setCenterY(100.0f); 
       circle2.setRadius(50.0f); 
       circle2.setStroke(Color.BLACK); 
       circle2.setFill(null); 

       pane.getChildren().add(circle2); 

       Circle leftInnerEye = new Circle(); 
        leftInnerEye.setCenterX(580.0f); 
        leftInnerEye.setCenterY(85.0f); 
        leftInnerEye.setRadius(5); 
        leftInnerEye.setStroke(Color.BLACK); 
        pane.getChildren().add(leftInnerEye); 

       Ellipse leftOutterEye = new Ellipse(); 
        leftOutterEye.setCenterX(580.0f); 
        leftOutterEye.setCenterY(85.0f); 
        leftOutterEye.setRadiusX(11.0f); 
        leftOutterEye.setRadiusY(8.0f); 
        leftOutterEye.setStroke(Color.BLACK); 
        leftOutterEye.setFill(null); 
        pane.getChildren().add(leftOutterEye); 

       Circle rightEye = new Circle(); 
        rightEye.setCenterX(620.0f); 
        rightEye.setCenterY(85.0f); 
        rightEye.setRadius(5); 
        rightEye.setStroke(Color.BLACK); 
        pane.getChildren().add(rightEye); 

       Ellipse rightOutterEye = new Ellipse(); 
        rightOutterEye.setCenterX(620.0f); 
        rightOutterEye.setCenterY(85.0f); 
        rightOutterEye.setRadiusX(11.0f); 
        rightOutterEye.setRadiusY(8.0f); 
        rightOutterEye.setStroke(Color.BLACK); 
        rightOutterEye.setFill(null); 
        pane.getChildren().add(rightOutterEye); 

       Polygon nose = new Polygon(); 
        nose.getPoints().setAll(
          600d, 90d, 
          588d, 115d, 
          612d, 115d); 
        nose.setStroke(Color.BLACK); 
        nose.setFill(null); 
        pane.getChildren().add(nose); 

       Arc mouth = new Arc(600, 115, 30, 16, 180, 180); 
        mouth.setFill(null); 
        mouth.setType(ArcType.OPEN); 
        mouth.setStroke(Color.BLACK); 
        pane.getChildren().add(mouth); 

      HBox hbox = new HBox(pane, pane2); 
      hbox.autosize(); 
      hbox.setAlignment(Pos.BASELINE_LEFT); 
      hbox.setPadding(new Insets(20)); 

     // Create a scene and place it in the stage 
     Scene scene = new Scene(hbox, 1000, 500); 
     primaryStage.setTitle("Laura's Chapter 14"); // Set the stage title 
     primaryStage.setScene(scene); // Place the scene in the stage 
     primaryStage.show(); // Display the stage 
     } 

    catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

public static void main(String[] args) { 
    launch(args); 
} 
+0

Я только что услышал от профессора, что инструкции были неправильными. Это не должно быть ни одной панели. Предполагается, что это отдельные. Поэтому единственное, что мне нужно, это изменить размер панели. –

+0

Привет, вы можете рассмотреть возможность редактирования своего вопроса, чтобы отразить ваши новые требования, чтобы мы могли помочь вам лучше. Вы также можете сконцентрировать вопрос как можно больше, поскольку он довольно широк. В чем суть вашего кода, который либо дает вам проблемы, либо что вы не понимаете? – eeeeeean

ответ

0

Создайте панель для каждой функции, а затем добавить функции, либо VBox или HBox, что укоренится панель сцены. Таким образом, у вас может быть GridPane для вашей второй функции. В JavaFX есть разные макеты, и они ведут себя по-разному. Взгляните на это documentation и его поддокументы.

Смежные вопросы