Я пытаюсь создать встроенное окно терминала в моем проекте. История терминала заполнена сеткой, в которой будет один столбец меток (терминал слушает TextField, и когда пользователь нажимает клавишу ввода, строка добавляется в историю).
public class Terminal extends BorderPane {
final private GridPane historyPane;
final private TextField inputField;
public Terminal() {
super.setId( "TerminalParent" );
historyPane = createHistoryPane();
inputField = createInputField();
super.setBottom( inputField );
super.setCenter( historyPane );
}
private GridPane createHistoryPane() {
final GridPane pane = new GridPane();
pane.setId( "TerminalHistoryPane" );
return pane;
}
private void addHistory( String str ) {
final Label label = new Label( str );
label.getStyleClass().add( "TerminalHistoryLabel" );
historyPane.addRow( historyPane.getRowCount(), label );
}
private TextField createInputField() {
final TextField field = new TextField();
field.setId( "TerminalTextField" );
field.setOnKeyPressed( ( event ) -> {
if( event.getCode() == KeyCode.ENTER ) {
addHistory( field.getText() );
field.clear();
}
} );
return field;
}
}
CSS
* {
-terminal-text-color: #FB0;
-terminal-foreground-color: #0FF;
-terminal-background-color: black;
}
#TerminalParent {
-fx-background-color: black;
-fx-pref-width: 400;
}
#TerminalTextField {
-fx-font-weight: bold;
-fx-font-family: "FreeMono";
-fx-font-size: 16;
-fx-background-color: -terminal-background-color;
-fx-border-color: -terminal-foreground-color;
-fx-text-fill: -terminal-text-color;
}
#TerminalHistoryPane {
-fx-font-weight: bold;
-fx-font-family: "FreeMono";
-fx-font-size: 16;
-fx-text-fill: -terminal-text-color;
-fx-background-color: -terminal-background-color;
-fx-border-color: -terminal-foreground-color;
}
.TerminalHistoryLabel {
-fx-text-fill: -terminal-text-color;
-fx-font-family: "FreeMono";
}
В настоящее время строки начинаются сверху и пишутся вниз. Когда они достигают дна, панель сетки начинает расти вместе с ними. Вместо этого я хотел бы перевернуть его так, чтобы первый ряд начинался снизу, а новые - pu sh, а старые - вверх (это можно сделать, сдвинув их вручную на единицу). Когда они достигнут верхней части панели, я бы хотел, чтобы панель была прокручиваемой.