71

Tôi đang sử dụng JScrollPane để cho phép cuộn trong JFrame có thành phần văn bản đóng vai trò là trình soạn thảo văn bản. Những gì tôi muốn làm, sau khi thiết lập văn bản trong trình chỉnh sửa này, hãy để nó cuộn ngược lên trên cùng, để bạn có thể thấy những gì ở đầu tập tin.

Có ai biết cách để làm điều này không?

|
119

Gọi setCaretP vị trí (0) trên thành phần văn bản của bạn sẽ khiến nó cuộn lên trên cùng.

|
  • 1

    Bạn đã đúng, vấn đề là dấu mũ ở cuối thành phần văn bản. Nó cũng hoạt động sau khi gọi 'setText (...)' trên trình soạn thảo văn bản. (đã được thử nghiệm với một cá thể JEditorPane dưới dạng bảng văn bản bên trong JScrollPane).

    – Hồ Cẩm Vân 15:10:13 05/02/2010
34

Chỉ trong trường hợp bạn không sử dụng một thành phần văn bản, hãy xem chủ đề được đăng ở đây .... Thiết lập thanh cuộn trên một JScrollPane

Giải pháp của họ là quay ra một luồng thông qua invokeLater

final JScrollPane scroll = new JScrollPane(text);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
   public void run() { 
       scroll.getVerticalScrollBar().setValue(0);
   }
});
|
  • 1

    Đây là câu trả lời gần nhất cho câu hỏi của tôi .. stackoverflow.com/questions/42961012/ , Tuy nhiên, làm thế nào có thể sử dụng phương thức này nếu có bảng điều khiển bên trong JScrollPane?

    – Ngô Thành Danh 20:07:17 22/03/2017
  • 1

    invokeLaterkhông làm mất một luồng, nó chỉ xử lý một sự kiện sẽ được thực hiện sau sự kiện hiện tại (ví dụ như nhấp vào nút, hoặc bất cứ điều gì là bối cảnh của mã gọi invokeLater) và bất kỳ sự kiện đã được xử lý nào khác kết thúc.

    – Tạ Đông Trà 16:27:55 02/08/2018
10

Điều này sẽ làm cho công việc:

DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
|
7

Bạn có thể sử dụng phương thức setCaretPosition(0)ngay sau setText(String t)thành phần văn bản của bạn.

|
7

Sử dụng JComponent.scrollRectToVisible ()

Nếu bạn cần thêm thông tin, đây là một bài viết

|
6

Bạn có thể thử điều này:

 scrollPane.getViewport().setViewPosition(new Point(0,0));

Theo JavaDocs setViewPocation () hoạt động như thế này:

Đặt tọa độ xem xuất hiện ở góc trên bên trái của chế độ xem, sẽ không làm gì nếu không có chế độ xem.

|
  • 1

    Điều này không phù hợp với tôi - ScrollPane nhảy lên trên cùng rồi ngay lập tức rơi xuống đáy một lần nữa.

    – Lý Việt Duy 17:45:06 18/01/2010
  • 1

    Nó hoạt động với tôi \ _ () _ / Tôi có một JTable bên trong JScrollPane của mình.

    – Lý Ðông Vy 19:21:07 27/10/2016
  • 1

    @jwoolard Có, giải pháp được trình bày ở đây không hoạt động trong một số trường hợp tôi gặp phải. NHƯNG, hãy lưu ý đến giải pháp tôi đặt ra sáng nay.

    – Trịnh Triệu Thái 20:56:33 13/04/2018
1

Đây là cách thực hiện:

textArea.setSelectionStart(0);
textArea.setSelectionEnd(0); 
|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.