Este é meu código:
public class Test extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
var textFlow1 = createTextFlow();
textFlow1.setStyle("-fx-background-color: cyan");
var textFlow2 = createTextFlow();
textFlow2.setStyle("-fx-background-color: yellow");
VBox vbox = new VBox(textFlow1, textFlow2);
Scene scene = new Scene(vbox, 300, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
private TextFlow createTextFlow() {
Text textA = new Text("ABC");
textA.setStyle("-fx-font-family: 'monospace'; -fx-font-size: 14;");
Line line = new Line(0, 0, 0, 20);
Text textB = new Text("DEF");
textB.setStyle("-fx-font-family: 'monospace'; -fx-font-size: 14;");
TextFlow textFlow = new TextFlow(textA, line, textB);
return textFlow;
}
public static void main(String[] args) {
launch(args);
}
}
e este é o resultado:
Como você vê, eu tenho dois TextFlows e cada um deles tem um nó de linha. Eu preciso que essas duas linhas pareçam uma linha, em outras palavras, não deve haver um espaço entre elas (agora eu tenho cerca de 4px de lacuna)
Alguém poderia dizer como conectar essas linhas (como fazer com que pareçam linha por linha)?
Sua pergunta provavelmente precisa de mais contexto e explicação. (Por exemplo, por que você quer fazer isso? Por que você está escolhendo
20
como a altura da linha?) Sem isso, é difícil saber se essa solução será generalizada do exemplo que você postou para qualquer que seja o problema real que você está tentando resolver.Dito isso, o seguinte alcançará o que você pediu especificamente. A ideia é não deixar que o
TextFlow
gerencie o posicionamento doLine
, ouLine
que o afete o cálculo do tamanho doTextFlow
, definindomanaged
comofalse
. Então substituaTextFlow.layoutChildren()
para posicionar manualmente a linha. Você precisastartY
que0
, sempre,endY
seja a altura do fluxo de texto, e ambosstartX
eendX
sejam (neste exemplo específico) o local x do segundoText
elemento.