JavaFx со странной рамкой в ​​списке - PullRequest
0 голосов
/ 16 марта 2019

У меня есть список JavaFX с использованием проекта flowless.Но я получаю странную границу (я не включил какую-либо границу и заставил границу иметь ширину = 0 пикселей), которая присутствует и имеет эффект градиента:

List with strange border that has a gradient

Когда я устанавливаю для фона ячейки значение -1, граница исчезает, поэтому я считаю, что эта проблема связана с фоном.Хотя это не решение, потому что если я включу границу (которую я хочу), эффект градиента все еще присутствует.

Кто-нибудь знает, как я могу избавиться от этой границы?

Я использую JavaFX 8 с последней версией 201.

РЕДАКТИРОВАТЬ: я сделал следующий пример, показывающий проблему:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.scene.text.TextFlow;
import javafx.stage.Stage;
import org.fxmisc.flowless.Cell;
import org.fxmisc.flowless.VirtualFlow;
import org.fxmisc.flowless.VirtualizedScrollPane;

public class Main extends Application {

  private ObservableList<Line> logLines;

  private VirtualFlow<Line, Cell<Line, LineCell>> listView;

  private VirtualizedScrollPane<VirtualFlow> listScrollPane;

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

  public void start(Stage primaryStage) {

    logLines = FXCollections.observableArrayList();
    for(int i=1; i < 50; i++) {
      logLines.add(new Line("Line "+i));
    }

    listView = VirtualFlow.createVertical(logLines, (line) -> Cell.wrapNode(new LineCell(line)));
    listScrollPane = new VirtualizedScrollPane<>(listView);

    Scene scene = new Scene(listScrollPane, 200, 600, Color.BLACK);

    primaryStage.setScene(scene);
    primaryStage.show();
  }


  private class Line {

    private String text;

    public Line(String text) {
      this.text = text;
    }

    public String getText() {
      return text;
    }
  }

  private class LineCell extends TextFlow {
    public LineCell(Line line) {
      super();
      Text t = new Text(line.getText());
      t.setFill(Color.BLACK);
      super.setStyle("-fx-background-color: green;");
      super.getChildren().add(t);
    }
  }
}

Спасибо!

1 Ответ

1 голос
/ 15 апреля 2019

Я нашел решение этой проблемы. Вместо LineCell, расширяющего TextFlow, теперь он расширяет StackPane, и я добавляю TextFlow в Stackpane.

  private class LineCell extends StackPane {
    public LineCell(Line line) {
      super();
      Text t = new Text(line.getText());
      t.setFill(Color.BLACK);

      TextFlow tf = new TextFlow(t);
      super.setStyle("-fx-background-color: green;");
      super.getChildren().add(tf);
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...