JavaFX TextArea의 너비 자동 조정

E. Muuli

그래서 저는 TextAreas로 구성된 동적 UI를 작업 해 왔지만 TextAreas에 대한 입력은 데이터베이스에서 가져 오므로 길이가 다릅니다. 또한 데이터베이스의 문자열 길이에 따라 TextAreas를 동적으로 만들어야합니다. 그리고 이것은 문자열의 길이가 그 길이를 픽셀 단위로 자동으로 알려주지 않기 때문에 어려운 작업입니다. 예를 들어 문자열 :

a) "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"

b) "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"

이 두 문자열은 70 개의 문자로 구성되지만 픽셀 단위의 길이는 완전히 다릅니다. 그리고 TextArea가 문자열의 길이 (픽셀)를 기준으로 너비를 가져 오는지 확인해야합니다.

나는 다음과 같은 것을 사용하려고 시도했습니다.

int textwidth = (int) font.getStringBounds(ta.getText(), frc).getWidth();

그러나 글꼴이 다음과 같기 때문에 오류가 발생합니다.

textLabel.getFont()
-> Font[name=System Regular, family=System, style=Regular, size=12.0]

그러나 이전 getStringBounds 메서드에서이 글꼴을 사용하면 오류가 발생합니다.

Cannot resolve method 'getStringBounds(java.lang.String, java.awt.font.FontRenderContext)'

어떤 도움이라도 대단히 감사하겠습니다. 필요한 경우 더 많은 정보를 제공 할 수 있습니다.

미리 감사드립니다!

James_D

Text개체 를 만들고 창 (예 : a StackPane) layout()에 배치하고 창을 호출 하여 일부 텍스트의 크기를 측정 한 다음 텍스트의 레이아웃 경계를 가져올 수 있습니다. 텍스트 영역에서 사용하려는 글꼴과 동일한 글꼴로 글꼴을 설정합니다.

남은 유일한 문제는 텍스트 영역에 테두리 등에 약간의 패딩이 필요하다는 것입니다. 다음 코드 예제에서는 고정 패딩 (시행 착오를 통해 설정)을 사용하지만 충분히 잘 작동합니다. 필요한 경우이를 개선 할 수 있습니다.

텍스트 필드에 내용을 입력하고 Enter를 누르십시오. 텍스트 영역의 텍스트와 크기를 업데이트합니다.

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class SizeTextAreaToString extends Application {

    @Override
    public void start(Stage primaryStage) {
        TextField enterField = new TextField();
        TextArea textArea = new TextArea();
        textArea.setPrefRowCount(1);

        enterField.setOnAction(e -> sizeTextAreaToText(textArea, enterField.getText()));

        VBox root = new VBox(5, enterField, textArea);
        VBox.setVgrow(textArea, Priority.NEVER);
        root.setPadding(new Insets(5));
        primaryStage.setScene(new Scene(root, 400, 400));
        primaryStage.show();
    }

    private void sizeTextAreaToText(TextArea textArea, String text) {
        Text t = new Text(text);
        t.setFont(textArea.getFont());
        StackPane pane = new StackPane(t);
        pane.layout();
        double width = t.getLayoutBounds().getWidth();
        double padding = 20 ;
        textArea.setMaxWidth(width+padding);
        textArea.setText(text);
    }

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

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다debugcn@gmail.com 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

부모 너비의 크기를 조정하지 않고 자식 너비를 동적으로 유지

분류에서Dev

React에서 값의 너비에 대한 입력 자동 크기 조정

분류에서Dev

선택한 OPTION의 너비에 따라 SELECT 요소 자동 크기 조정

분류에서Dev

디스플레이의 열 너비 자동 조정 : 테이블 행 차단?

분류에서Dev

<iframe>의 너비와 높이에 따라 콘텐츠 크기 자동 조정

분류에서Dev

HTML / CSS-래퍼의 콘텐츠 너비 자동 크기 조정

분류에서Dev

고정 너비와 "사용자 정의 크기 조정 가능"길이를 Spring <form : textarea />으로 설정하는 방법은 무엇입니까?

분류에서Dev

입력 각도의 너비를 동적으로 크기 조정

분류에서Dev

Android에서 동적으로 조각보기의 너비 설정

분류에서Dev

DataGridView 열 자동 조정 너비 및 크기 조정 가능

분류에서Dev

DataGridView 열 자동 조정 너비 및 크기 조정 가능

분류에서Dev

Excel의 자동 열 너비

분류에서Dev

Excel의 자동 열 너비

분류에서Dev

너비와 높이가 고정 되어도 캘린더 <td>의 자동 크기 조정 중지

분류에서Dev

자동 레이아웃으로 고정 너비 및 높이 UIImageView의 크기를 조정하는 방법

분류에서Dev

JavaFX FlowPane 자동 크기 조정

분류에서Dev

JavaFX-FlowPane 자동 크기 조정

분류에서Dev

두 div가 플로팅 될 때 div의 너비 설정 (자동)

분류에서Dev

인라인 블록이 자식의 너비에 따라 자동으로 너비를 조정하는 이유는 무엇입니까?

분류에서Dev

고정 너비 div 내부 div 요소의 동적 너비

분류에서Dev

CSS : 콘텐츠 너비에 맞게 자르는 최대 너비의 자체 조정 테이블

분류에서Dev

Powershell : 자동 크기 조정 및 특정 열 너비

분류에서Dev

ul의 너비를 가장 넓은 자식 너비로 설정

분류에서Dev

모든 텍스트에 맞게 텍스트 위젯의 너비를 자동으로 조정

분류에서Dev

절대 요소 내부의 상대 요소 너비를 자동 조정하는 방법

분류에서Dev

데이터 테이블의 열 너비를 자동으로 조정하는 방법

분류에서Dev

텍스트 영역 옆의 텍스트 너비를 자동으로 조정 하시겠습니까?

분류에서Dev

JavaFX에서 TextArea의 내용 정렬

분류에서Dev

단락 너비에 자동으로 맞도록 div 너비 크기 조정

Related 관련 기사

  1. 1

    부모 너비의 크기를 조정하지 않고 자식 너비를 동적으로 유지

  2. 2

    React에서 값의 너비에 대한 입력 자동 크기 조정

  3. 3

    선택한 OPTION의 너비에 따라 SELECT 요소 자동 크기 조정

  4. 4

    디스플레이의 열 너비 자동 조정 : 테이블 행 차단?

  5. 5

    <iframe>의 너비와 높이에 따라 콘텐츠 크기 자동 조정

  6. 6

    HTML / CSS-래퍼의 콘텐츠 너비 자동 크기 조정

  7. 7

    고정 너비와 "사용자 정의 크기 조정 가능"길이를 Spring <form : textarea />으로 설정하는 방법은 무엇입니까?

  8. 8

    입력 각도의 너비를 동적으로 크기 조정

  9. 9

    Android에서 동적으로 조각보기의 너비 설정

  10. 10

    DataGridView 열 자동 조정 너비 및 크기 조정 가능

  11. 11

    DataGridView 열 자동 조정 너비 및 크기 조정 가능

  12. 12

    Excel의 자동 열 너비

  13. 13

    Excel의 자동 열 너비

  14. 14

    너비와 높이가 고정 되어도 캘린더 <td>의 자동 크기 조정 중지

  15. 15

    자동 레이아웃으로 고정 너비 및 높이 UIImageView의 크기를 조정하는 방법

  16. 16

    JavaFX FlowPane 자동 크기 조정

  17. 17

    JavaFX-FlowPane 자동 크기 조정

  18. 18

    두 div가 플로팅 될 때 div의 너비 설정 (자동)

  19. 19

    인라인 블록이 자식의 너비에 따라 자동으로 너비를 조정하는 이유는 무엇입니까?

  20. 20

    고정 너비 div 내부 div 요소의 동적 너비

  21. 21

    CSS : 콘텐츠 너비에 맞게 자르는 최대 너비의 자체 조정 테이블

  22. 22

    Powershell : 자동 크기 조정 및 특정 열 너비

  23. 23

    ul의 너비를 가장 넓은 자식 너비로 설정

  24. 24

    모든 텍스트에 맞게 텍스트 위젯의 너비를 자동으로 조정

  25. 25

    절대 요소 내부의 상대 요소 너비를 자동 조정하는 방법

  26. 26

    데이터 테이블의 열 너비를 자동으로 조정하는 방법

  27. 27

    텍스트 영역 옆의 텍스트 너비를 자동으로 조정 하시겠습니까?

  28. 28

    JavaFX에서 TextArea의 내용 정렬

  29. 29

    단락 너비에 자동으로 맞도록 div 너비 크기 조정

뜨겁다태그

보관