2016-03-04 16 views
5

Trong ứng dụng của tôi, tôi đang sử dụng hai Tab. Trong lần đầu tiên tôi đặt HtmlEditor và trong phần thứ hai tôi đặt TextArea. Tab HTML là mặc định và khi người dùng tạo đầu vào HTML, anh ấy có thể chuyển sang TextArea để xem/thay đổi mã nguồn HTML trực tiếp. Tôi đã thêm một người nghe để lấy htmlText từ HtmlEditor và đặt nó làm văn bản trong TextArea, vì vậy người dùng có thể dễ dàng chuyển đổi giữa chế độ HTML và nguồn. Đây là người nghe của tôi:JavaFX TextArea cách đặt văn bản với ngắt dòng tự động mới

@FXML 
private Tab htmlTab; 

@FXML 
private Tab sourceTab; 

@FXML 
private HTMLEditor htmlEditor; 

@FXML 
private TextArea textEditor; 

     htmlTab.selectedProperty().addListener(new ChangeListener<Boolean>() { 
     @Override 
     public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 
      if (htmlTab.isSelected()) { 
       htmlEditor.setHtmlText(textEditor.getText()); 
      } 
     } 
    }); 

    sourceTab.selectedProperty().addListener(new ChangeListener<Boolean>() { 
     @Override 
     public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 
      if (sourceTab.isSelected()) { 
       textEditor.setText(htmlEditor.getHtmlText()); 
      } 
     } 
    }); 

Nó hoạt động tốt, nhưng HtmlEditor tự động ngắt dòng văn bản thành dòng. Khi tôi chuyển sang TextArea, tất cả chỉ là một dòng.

Tôi nghĩ về việc tạo một phương thức trợ giúp có thuộc tính độ dài TextArea để đếm số ký tự và thêm ký tự dòng mới mỗi ký tự "n", nhưng có thể có giải pháp tốt hơn?

+1

Bạn chỉ cần tìm cho 'textEditor.setWrapText (true);'? –

+0

2 giờ nghiên cứu và nó rất đơn giản :) Cảm ơn bạn rất nhiều! Đó là những gì tôi đang tìm kiếm! – RichardK

Trả lời

12

Nếu bạn chỉ muốn các văn bản để bọc, sử dụng

textEditor.setWrapText(true); 
Các vấn đề liên quan