JavaFX: setStrokeType () делает мою программу чрезвычайно медленной

1

Я просто начинаю использовать JavaFX, и setStrokeType() похоже, делает мою программу очень медленной, а иногда даже сбой.

Как только я поставлю -fx-stroke-type:outside; в моем файле CSS и использовать его или использовать label_4.setStrokeType(StrokeType.OUTSIDE); моя программа будет работать медленно, я даже не могу установить флажок.

Вот он мой код:

#label{ 
    -fx-font:25 Arial;
    -fx-font-weight:900;
    -fx-fill: white;
    -fx-stroke: #989898;
    -fx-stroke-width: 1;
    -fx-stroke-type:outside;
    -fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.45), 2, 0, 0, 1);
}



public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
         StackPane root = new StackPane();
         Scene scene = new Scene(root, 856, 290);
         primaryStage.setResizable(false);
         root.setId("pane");
         scene.getStylesheets().add("./application/application.css");
         CheckBox check_1 = new CheckBox("Check two");
         check_1.getStyleClass().add("check");
         CheckBox check_2 = new CheckBox("Check one");
         check_2.getStyleClass().add("check");

         Text t= new Text("TEST TEST TEST TEST");
         t.setId("label");
         root.getChildren().addAll(check_1,check_2,t);

         primaryStage.setTitle("Hello world");
         primaryStage.setScene(scene);
         primaryStage.show();
    }

    public static void main(String[] args) {
        try 
        { 
            launch(args);
         } 
         catch (Exception e) 
         { 
            System.out.println(e.toString()); 
         } 
     } 
 }
  • 0
    Что вы используете для профилирования кода? В какой среде выполняется код?
  • 0
    Ошибка: bugs.openjdk.java.net/browse/JDK-8089081
Теги:
javafx

1 ответ

1

Я думаю, вы имеете дело с ошибкой здесь. Как вы говорите, ваш код работает с отзывчивыми проблемами.

Я провел несколько тестов с помощью Scene Builder 2.0:

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
        <Text fill="WHITE" layoutX="119.0" layoutY="192.0" stroke="#989898" strokeType="OUTSIDE" text="TEST TEST TEST TEST">
           <font>
              <Font name="Arial Bold" size="36.0" />
           </font>
           <effect>
              <DropShadow color="#00000072" offsetY="1.0" />
           </effect>
        </Text>
   </children>
</Pane>

Это использует 100 МБ памяти, и я могу перемещать ползунок размера шрифта безупречно.

Однако, если я установил тип штриха в OUTSIDE или INSIDE, Scene Builder требует 125 МБ памяти, а ползунок размера шрифта становится безответственным (память перескакивает до 175 МБ, а процессор переходит на 100% от одного ядра).

Изображение 174551

Пожалуйста, рассмотрите вопрос об отправке отчета об ошибке.

  • 0
    Привет, Хосе, большое спасибо за ответ, я использую Eclipse Luna на Win 7. Я не понимаю, как они тестировали функцию при публикации. Пока это не работает для меня, я постараюсь сделать отчет об ошибке, чтобы увидеть, как они реагируют. Ура :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню