我想要更改TextArea游标,但使用以下命令时没有任何react :
numTextArea.setCursor(Cursor.DISAPPEAR);
我想要更改TextArea游标,但使用以下命令时没有任何react :
numTextArea.setCursor(Cursor.DISAPPEAR);
默认皮肤TextArea
包括一个"内容区域",其中is documented表示为Region
.正是这个内容区域将其光标设置为Cursor.TEXT
(default user agent stylesheet).由于鼠标悬停在内容区域上,而不是直接悬停在文本区域上,因此您看到的是内容区域的光标,而不是文本区域.
更改光标的最简单方法可能是使用css.
.text-area .content {
-fx-cursor: disappear;
}
他说: 然后将样式表添加到场景(或文本区域,或祖先布局).例如:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;
public class Main extends Application {
private static final String CSS = """
.text-area .content {
-fx-cursor: hand;
}
""".stripIndent();
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(new TextArea(), 500, 300);
scene.getStylesheets().add("data:text/css," + CSS);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Note:以上通过data URL将样式集添加到场景中.这需要使用JavaFX 17+.
本例使用Cursor.HAND
,因为Cursor.DISAPPEAR
刚刚给了我在带有Java/JavaFX 20.0.1的Windows10上的默认光标.我不确定这是不是个窃听器.
注您可以在css中使用null
或inherit
表示-fx-cursor
,然后在代码中设置文本区域的光标(就像您当前正在try 做的那样).