!10 feat: #I7UFOF 隐藏滚动条

Merge pull request !10 from songdragon/feat-I7UFOF
This commit is contained in:
Luke 2023-08-19 12:07:06 +00:00 committed by Gitee
commit cbcdc120b7
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 36 additions and 9 deletions

View File

@ -42,6 +42,7 @@ public class LunchApp extends Application {
scene = new Scene(root, width, length); scene = new Scene(root, width, length);
Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet()); Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet());
scene.getStylesheets().add(Objects.requireNonNull(getClass().getResource("/styles.css")).toExternalForm());
primaryStage.setTitle(name); primaryStage.setTitle(name);
primaryStage.setWidth(width); primaryStage.setWidth(width);

View File

@ -94,7 +94,7 @@ public class Controller implements ControllerInterface {
*/ */
@Override @Override
public void autoSave(LineNumberTextArea textArea) { public void autoSave(LineNumberTextArea textArea) {
textArea.textProperty().addListener((observable, oldValue, newValue) -> { textArea.getMainTextArea().textProperty().addListener((observable, oldValue, newValue) -> {
Tab tab = ViewManager.tabPane.getSelectionModel().getSelectedItem(); Tab tab = ViewManager.tabPane.getSelectionModel().getSelectedItem();
if (tab != null) { if (tab != null) {
File file = (File) tab.getUserData(); File file = (File) tab.getUserData();

View File

@ -13,16 +13,18 @@ public class LineNumberTextArea extends BorderPane {
private final TextArea mainTextArea; private final TextArea mainTextArea;
private final TextArea lineNumberArea; private final TextArea lineNumberArea;
static final int[] sizeTable = {9, 99, 999, 9999, 99999, 999999, 9999999,
99999999, 999999999, Integer.MAX_VALUE};
public LineNumberTextArea() { public LineNumberTextArea() {
mainTextArea = new TextArea(); mainTextArea = new TextArea();
lineNumberArea = new TextArea(); lineNumberArea = new TextArea();
lineNumberArea.setEditable(false); lineNumberArea.setEditable(false);
lineNumberArea.setMinWidth(55); lineNumberArea.setPrefWidth(30);
lineNumberArea.setMaxWidth(55);
// 设置显示滚动条样式类 // 设置显示滚动条样式类
/* lineNumberArea.getStyleClass().add("hide-scrollbars"); lineNumberArea.getStyleClass().add("text-line-number");
mainTextArea.getStyleClass().add("show-scrollbars"); */ /*mainTextArea.getStyleClass().add("show-scrollbars"); */
lineNumberArea.textProperty().addListener((observable, oldValue, newValue) -> updateLineNumberWidth());
mainTextArea.textProperty().addListener((observable, oldValue, newValue) -> updateLineNumberArea()); mainTextArea.textProperty().addListener((observable, oldValue, newValue) -> updateLineNumberArea());
// 当主要文本区域的垂直滚动位置发生变化时使行号文本区域的滚动位置保持一致 // 当主要文本区域的垂直滚动位置发生变化时使行号文本区域的滚动位置保持一致
@ -39,6 +41,22 @@ public class LineNumberTextArea extends BorderPane {
setLeft(lineNumberArea); setLeft(lineNumberArea);
} }
private void updateLineNumberWidth() {
int numOfLines = mainTextArea.getParagraphs().size();
int count = 1;
for (int i = 0; i < sizeTable.length; i++) {
if (numOfLines <= sizeTable[i]) {
count = i + 1;
break;
}
}
//单数字宽度10像素4为padding=左3+右1
int actualWidth = count * 10 + 4;
if (actualWidth > lineNumberArea.getWidth()) {
lineNumberArea.setPrefWidth(actualWidth);
}
}
public StringProperty textProperty() { public StringProperty textProperty() {
return mainTextArea.textProperty(); return mainTextArea.textProperty();
} }

View File

@ -5,7 +5,15 @@
} }
/* 不显示滚动条 */ /* 不显示滚动条 */
.hide-scrollbars .scroll-pane { .text-line-number .content{
-fx-hbar-policy: never; -fx-cursor: text;
-fx-vbar-policy: never; -fx-padding: 8px 1px 8px 5px;
} }
.text-line-number .scroll-bar:vertical {
-fx-pref-width: 1;
-fx-opacity: 0;
}
.text-line-number .scroll-bar:horizontal {
-fx-pref-height: 1;
-fx-opacity: 0;
}