2012-04-20 23 views
26

Tôi đã kéo tóc của tôi cho điều này từ khá lâu. Tôi đã nghiên cứu một giờ về cách xóa một giao diện điều khiển trong Java.Làm thế nào để Clear Console trong Java?

Tất cả tôi tìm thấy là bẩn hack hoặc bằng cách in một loạt các dòng hoặc thực hiện này

Runtime.getruntime.exec("cls/clear"); 

Tuy nhiên, không có gì vẻ là làm việc cho tôi. Không thực sự có cách nào để xóa giao diện điều khiển trong Java như trong C (clrscr();). Không có thư viện bên ngoài nào mà điều này có thể đạt được.

Vui lòng cho tôi biết nếu có ai từng thực hiện việc này trước khi sử dụng chức năng, thư viện, v.v. đúng cách thay vì tấn công bẩn.

+1

'như C'? Tôi nghĩ cách duy nhất để làm điều đó trong C là sử dụng một thư viện như ncurses. Nếu đó là những gì bạn đang sau, câu hỏi này mô tả cách để có được kết quả tương tự/giống hệt nhau với Java: http://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal -các ứng dụng. – Hassan

+0

Nếu bạn có Thiết bị đầu cuối VT100 có thể bạn có thể sử dụng Mã thoát (Esc [2J \t Xóa toàn bộ màn hình \t ED2) xem http://ascii-table.com/ansi-escape-sequences-vt-100.php Đối với các thiết bị đầu cuối khác tại đó có thể là các mã thoát khác. Bàn điều khiển eclipse không ngoại trừ bất kỳ mã thoát nào. – Andreas

+3

Câu hỏi tương tự: ** [Java: Xóa bảng điều khiển] (http://stackoverflow.com/questions/2979383/java-clear-the-console) ** –

Trả lời

3
Runtime.getRuntime().exec("PlatformDepedentCode"); 

Bạn cần thay "PlatformDependentCode" bằng lệnh điều khiển rõ ràng của nền tảng.

Phương thức exec() thực hiện lệnh bạn đã nhập làm đối số, giống như khi được nhập trong bảng điều khiển.

Trong Windows, bạn sẽ viết nó là Runtime.getRuntime().exec("cls");.

+10

'Runtime.getRuntime(). Exec (" cls ") ; 'không hoạt động (mọi lúc) trên cửa sổ. – Lion

0

Bạn cần hướng dẫn bảng điều khiển xóa.

Đối với thiết bị đầu cuối nối tiếp, điều này thường được thực hiện thông qua "chuỗi thoát", trong đó đáng chú ý là bộ vt100 đã trở nên rất phổ biến (và ANSI-em họ thân của nó).

Windows theo truyền thống không hỗ trợ các chuỗi như vậy "out-of-the-box" nhưng dựa vào các cuộc gọi API để làm những việc này. Đối với các phiên bản dựa trên DOS của Windows, tuy nhiên, trình điều khiển ANSI.SYS có thể được cài đặt để cung cấp hỗ trợ như vậy.

Vì vậy, nếu bạn đang sử dụng Windows, bạn cần tương tác với API Windows thích hợp. Tôi không tin rằng thư viện thời gian chạy Java chuẩn chứa mã để làm như vậy.

16

Nếu thiết bị đầu cuối của bạn hỗ trợ ANSI escape codes, điều này sẽ xóa màn hình và di chuyển con trỏ đến dòng đầu tiên, cột đầu tiên:

System.out.print("\033[H\033[2J"); 
System.out.flush(); 

này hoạt động trên hầu hết các thiết bị đầu cuối UNIX và giả lập thiết bị đầu cuối. Windows cmd.exe không diễn giải mã thoát ANSI.

+0

không hoạt động trên bàn điều khiển eclipse trong ubuntu – sziraqui

+0

Đó là vì bàn điều khiển Eclipse không hỗ trợ mã thoát ANSI. – IMustBeSomeone

1

Bạn có thể dễ dàng triển khai clrscr() sử dụng đơn giản để in vòng lặp "\ b".

5

Hãy thử mã này

import java.io.IOException; 

public class CLS { 
    public static void main(String... arg) throws IOException, InterruptedException { 
     new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); 
    } 
} 

Bây giờ khi quá trình Java được kết nối với một giao diện điều khiển, nó sẽ xóa console.

-1

Nếu bạn đang sử dụng cửa sổ và muốn xóa màn hình trước khi chạy chương trình, bạn có thể biên dịch tệp gọi từ tệp .bat. ví dụ:


cls

java "những gì bao giờ tên của lớp biên dịch là"


Save as "vv" .bat rồi chạy bằng cách gọi nó trong nhắc lệnh hoặc nhấp đúp vào tệp

+1

nếu cách tiếp cận của bạn được sử dụng thì nó xóa tất cả mọi thứ trước khi khởi chạy chương trình nhưng câu hỏi là xóa màn hình lúc chạy khi chương trình java đang chạy. –

1

Sử dụng mã sau:


System.out.println("\f"); 

'\ f' là một chuỗi thoát đại diện formfeed. Đây là những gì tôi đã sử dụng trong các dự án của tôi để xóa giao diện điều khiển. Điều này đơn giản hơn các mã khác, tôi đoán vậy.

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