2017-04-04 1 views
-1

글꼴 크기를 수정하지 않고 TextField에서 캐럿의 크기를 조정하려하지만이를 수행 할 수 없습니다.TextField (JavaFX 8)에서 캐럿 크기 변경

누구든지 어떻게하는지 압니까?

감사합니다.

+0

당신은 아마 [캐럿 경로를 변경] 수 (http://stackoverflow.com/questions/27315861/hide :

import com.sun.javafx.scene.control.skin.TextFieldSkin; import javafx.scene.control.TextField; public class TextFieldCaretControlSkin extends TextFieldSkin { public TextFieldCaretControlSkin(TextField textField, double scale) { super(textField); setScale(scale); } private void setScale(double scale) { caretPath.setScaleX(scale); caretPath.setScaleY(scale); } } 

이 답변이 답변에 따라 한 -input-caret-of-textfield-in-javafx8)을 사용하면됩니다. – jewelsea

답변

1

왜 이렇게하고 싶지는 모르겠다. 그리고 이것은 아마도 당신이 원하는 것을 정확하게주지는 못하지만, 캐럿의 크기를 변경합니다. 큰 캐럿은 여전히 ​​포함 된 TextField 범위 내에 오도록 잘립니다.

m과 a 사이의 작은 선은 작은 캐럿입니다.

small caret

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class BiglyCaret extends Application { 

    @Override 
    public void start(Stage stage) throws Exception { 
     TextField bigCaretTextField = new TextField("Big Caret"); 
     bigCaretTextField.setSkin(
       new TextFieldCaretControlSkin(
         bigCaretTextField, 
         2 
       ) 
     ); 

     TextField smallCaretTextField = new TextField("Small Caret"); 
     smallCaretTextField.setSkin(
       new TextFieldCaretControlSkin(
         smallCaretTextField, 
         0.5 
       ) 
     ); 

     TextField normalTextField = new TextField("Standard Caret"); 

     VBox layout = new VBox(
       10, 
       bigCaretTextField, 
       smallCaretTextField, 
       normalTextField 
     ); 

     layout.setPadding(new Insets(10)); 
     stage.setScene(new Scene(layout)); 

     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

TextFieldCaretControlSkin.java

참고,이 자바 8 개인 API 클래스를 사용하여가 '원 있도록 :보기는 어렵다 그래서 유래로 이미지 전송은 선명도를 감소 Java 9에서 작동합니다. Java 9에서 TextFieldSkin은 com.sun 패키지 대신 javafx 패키지로 이동하여 공용 API가되므로 패키지를 변경하면 Java 9에서 작동합니다.

+0

그게 완벽합니다. 감사! – Aniru

관련 문제