2009-02-19 30 views
8

Tôi hiện đang có một chương trình in các dòng văn bản sang màn hình theo nhiều cách khác nhau như các câu lệnh 'System.out.println()' và cho các vòng in tất cả các phần tử trong một mảng để sàng lọc.Làm cách nào để chuyển hướng tất cả đầu ra của bàn điều khiển sang hộp văn bản GUI?

Tôi hiện đang thêm GUI vào chương trình này. Vấn đề của tôi là tôi muốn in tất cả mọi thứ để in giao diện điều khiển của eclipse vào một textbox trong GUI của tôi. Điều này có thể và nếu như vậy làm thế nào tôi sẽ đi về việc này.

Cảm ơn trước.

+0

True sqook, tôi không thấy chỉnh sửa của bạn, tôi đã thay đổi câu hỏi gốc. –

Trả lời

7

Ý tưởng:

Tạo PrintStream của riêng bạn để đưa mọi thứ vào hộp văn bản này. Sau đó thiết lập PrintStream mới này là dòng standard output như thế:

System.setOut(myPrintStream()); 
+0

bạn có thể đưa ra một chút chi tiết hơn về cách tôi có thể thực hiện ý tưởng này vì việc in ấn đang diễn ra trong một lớp riêng biệt? cảm ơn. –

+0

Chỉ cần nhìn vào bài đăng của theomega! – romaintaz

21

Kiểm tra bài viết trên blog này, quyền Redirecting System.out and System.err to JTextPane or JTextArea. Nó mô tả hầu hết mọi thứ bạn cần.

Ý tưởng cơ bản là bạn tạo luồng đầu ra chuyên biệt của riêng mình. Khi bạn triển khai các phương thức write(), bạn gọi một số mã để nối thêm dữ liệu mới vào hộp văn bản của bạn. Sau đó, bạn đặt luồng đầu ra mới này làm số System.out bằng cách gọi System.setOut() hoặc System.setErr().

LƯU Ý: bài viết đó thiếu một điều. Bạn cần phải start your program in a separate thread.

+0

Cảm ơn ý tưởng. Trang web này dường như có những thứ mà nó muốn in cho vùng văn bản trong cùng một lớp với gui. Tôi muốn giữ các lớp riêng biệt. –

+0

vì vậy chỉ cần tách mã thành hai lớp! – romaintaz

+0

Ông sửa chữa vấn đề của 2 chủ đề. Vì vậy, hướng dẫn là chính xác ngay bây giờ. –

Các vấn đề liên quan