!101 fix:状态栏的行和列无法根据光标更新

Merge pull request !101 from Luke/release-v1.1.13
This commit is contained in:
Luke 2023-09-17 12:51:54 +00:00 committed by Gitee
commit 5202fc200e
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 24 additions and 1 deletions

View File

@ -37,7 +37,7 @@ public class LineNumberTextArea extends StyleClassedTextArea {
public LineNumberTextArea() {
//
setPadding(new Insets(8, 0, 0, 0));
setStyle("-fx-font-family: 'Courier New';");
// 设置 LineNumberTextArea 的样式包括边框和背景颜色
getStyleClass().add("line-number-text-area");
this.setParagraphGraphicFactory(LineNumberFactory.get(this));

View File

@ -1,5 +1,7 @@
package org.jcnc.jnotepad.views.root.center.main.bottom.status;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
@ -114,10 +116,31 @@ public class BottomStatusBox extends AbstractHorizontalBox {
CenterTab centerTab = instance.getSelected();
if (centerTab != null) {
updateEncodingLabel(centerTab.getCharset().name());
// 添加光标位置变化监听器
LineNumberTextArea textArea = centerTab.getLineNumberTextArea();
textArea.caretPositionProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
updateRowColumnLabel(textArea.getCaretPosition(), textArea.getText());
}
});
}
}
}
/**
* 更新行列信息
* @param caretPosition 光标位置
* @param text 文本内容
*/
private void updateRowColumnLabel(int caretPosition, String text) {
int row = getRow(caretPosition, text);
int column = getColumn(caretPosition, text);
statusLabel.setText(getStatusBarFormattedText(row, column, text.length()));
}
/**
* 获取光标所在行号
*