2011-08-17 36 views
7

Tôi có một dự án lớn để gỡ lỗi, và tôi đã tự hỏi nếu có anyway tôi có thể sử dụng để thay đổi phương pháp System.out.println trong đầu ra của nhật thựcHiện System.out.println đầu ra với màu sắc khác

ví dụ:

System.out.println("I want this to be red"); 
System.out.println("I want this to be blue"); 
System.out.println("I want this to be yellow"); 
System.out.println("I want this to be magenta"); 

để dễ đọc hơn.

EDIT

với sysout Tôi có điều này sysout

với syserr Tôi có điều này syserr

+0

có thể trùng lặp của [Cách in màu trong bảng điều khiển bằng System.out.println?] (Http: // stackoverflow.com/questions/5762491/how-to-print-color-in-console-using-system-out-println) –

+0

hầu hết các phương thức được báo cáo ở đây làm việc tại bàn điều khiển hệ thống nhưng KHÔNG ở bàn điều khiển Eclipse, đó là câu hỏi . –

Trả lời

20

Trong Eclipse, cách tiếp cận đơn giản nhất là nên sử dụng System.err.println cho dòng bạn muốn trở thành màu đỏ - Tôi tin đó là mặc định. (Bạn có thể thay đổi nó trong Preferences -> Run/Debug -> Console).

khác biệt đó sẽ không hiển thị khi chạy trong một thực console tất nhiên, nhưng tôi không nghĩ giao diện điều khiển Eclipse hỗ trợ ANSI chuỗi màu thoát, vv

EDIT: Đối với Windows console , Tôi mong đợi để hoạt động. Nó không phải vô cùng di động, nhưng nếu đó không phải là một vấn đề, bạn chỉ có thể tạo ra một lớp để đóng gói các trình tự thoát một cách thích hợp, vì vậy bạn có thể gọi một cái gì đó như:

ansiConsole.printRed("sample line in red"); 
ansiConsole.printBlue("sample line in blue"); 

(tôi có lẽ sẽ làm cho các phương pháp đó trở lại trở lại bất kỳ màu "hiện tại" nào sau mỗi cuộc gọi.)

EDIT: Như đã lưu ý trong thư viện, thư viện Jansi đã tồn tại, vì vậy bạn cũng có thể sử dụng nó. Nó không có các phương pháp mô tả ở trên, nhưng tôi chắc chắn nó vẫn sẽ làm những gì bạn muốn ...

+0

Tôi đã thử syserr nhưng tôi không có kết quả tương tự. –

+0

@OpenMind: Có, nhưng theo một cách hoàn toàn khác. Bạn có ý gì bởi "Tôi không có kết quả tương tự" trước đây? –

+0

@OpenMind: Thử xả sau mỗi lần viết - Tôi nghi ngờ đó là sự cố đệm. –

2

hãy có một cái nhìn tại Jansi (Jansi's Github)

Jansi là một java nhỏ thư viện cho phép bạn sử dụng ANSI escape trình tự để định dạng đầu ra giao diện điều khiển của bạn hoạt động ngay cả trên các cửa sổ.

+0

U có thể sử dụng: http://www.java2s.com/Code/Jar/j/Downloadjansi14jar.htm nếu bạn muốn sử dụng một cái bình thay vì lưu trữ. Điều này giải quyết vấn đề nhập của tôi trong nhật thực. – Eagle

0

Có vẻ như bạn muốn làm nổi bật đầu ra của System.out.println() sử dụng màu sắc khác nhau để giúp bạn gỡ rối, tại sao không chuyển hướng tất cả các sản phẩm của System.out vào một tập tin trong điểm vào chương trình của bạn:

FileOutputStream fis = new FileOutputStream(new File("log.txt")); 
PrintStream out = new PrintStream(fis); 
System.setOut(out); 

Sau đó, sử dụng một số công cụ theo dõi tệp nhật ký thời gian thực và miễn phí có chức năng tô sáng có thể định cấu hình bằng các màu khác nhau, chẳng hạn như BareTail, để xem tệp này.

5

Vui lòng tham khảo mã sau.Cũng tham khảo liên kết này cho mã màu ANSI. http://en.wikipedia.org/wiki/ANSI_escape_code

public class ColourConsoleDemo { 
    public static void main(String[] args) { 
     // TODO code application logic here 
     System.out.println("\033[0m BLACK"); 
     System.out.println("\033[31m RED"); 
     System.out.println("\033[32m GREEN"); 
     System.out.println("\033[33m YELLOW"); 
     System.out.println("\033[34m BLUE"); 
     System.out.println("\033[35m MAGENTA"); 
     System.out.println("\033[36m CYAN"); 
     System.out.println("\033[37m WHITE"); 
    } 
} 
+0

Câu trả lời hay! Nó làm việc cho tôi. Cảm ơn. – androidevil

+1

thực sự '\ 033 [0m' là viết tắt của thiết lập lại. –

+0

Tuyệt vời! Tôi nghĩ rằng đây phải là câu trả lời được chấp nhận – doc

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