Làm cách nào để backspace \ b hoạt động trong bảng điều khiển của Eclipse?


79

Tôi đang tạo một ứng dụng Java nhỏ sẽ có chỉ báo tiến trình với tỷ lệ phần trăm. Trong mỗi vòng lặp, nó sử dụng phím xóa lùi \bđể xóa tiến trình hiển thị trước khi hiển thị phần trăm tiếp theo.

Đây là một ví dụ đơn giản:

public static void main(String[] args) throws Exception {
    System.out.print("Progress: ");
    for (int percentage = 0; percentage < 100; percentage++) {
        System.out.print(percentage + "%");
        Thread.sleep(10); // Stub for "long running task".
        int length = String.valueOf(percentage).length() + 1;
        while (length-- > 0) {
            System.out.print('\b');
        }
    }
    System.out.println("finished!");
}

Điều này hoạt động hoàn hảo trong dấu nhắc lệnh, nhưng ký tự xóa lùi không được nhận dạng trong bảng điều khiển của Eclipse (Galileo build 20090920-1017). Thay vào đó, nó hiển thị một hình vuông trống biểu thị một ký tự không xác định. Xem ảnh chụp màn hình:

văn bản thay thế

Làm cách nào để Eclipse "hiển thị" backspace đúng cách? Tức là để nó xóa ký tự trước đó.

Đây thực sự không phải là showstopper vì nó sẽ chỉ được chạy trong bảng điều khiển lệnh, nhưng sẽ rất tuyệt nếu nó hoạt động trong Eclipse :)


1
Tôi thấy các triệu chứng tương tự trong NetBeans
PMorganCA

Câu trả lời:


57

Lỗi Eclipse # 76936. Tôi sẽ không tin tưởng vào họ để sửa chữa nó và không có cách giải quyết nào được liệt kê.

Bạn có thể gặp may khi tìm thấy một plugin đóng góp một bảng điều khiển nâng cao hơn.


16
Xem nhận xét # 24 - "... nhóm gỡ lỗi hiện không có thời gian / tài nguyên để giải quyết vấn đề này. Chúng tôi sẽ đánh giá rất cao những đóng góp. "
Stephen C

6
@BryanHunt rõ ràng không quan trọng đối với người đưa ra quyết định phải làm gì cho phiên bản tiếp theo của Eclipse. Rõ ràng nó cũng không đủ quan trọng đối với bạn.
Thorbjørn Ravn Andersen

14
Tôi đã sửa lỗi, nó phải ở 4,5 M4.
Philippe Marschall

2
@PhilippeMarschall Tôi không có ý làm giảm công việc khó khăn của bạn, nhưng theo tôi có thể nói, nó chắc chắn không được sửa (sử dụng bản phát hành Mars.) Việc in các ký tự xóa lùi không ảnh hưởng gì đối với tôi. Chỉnh sửa: Có vẻ như lỗi đã thực sự xuất hiện trở lại, hãy xem hai mục cuối cùng trong báo cáo lỗi được liên kết trong câu trả lời này.
b1nary.atr0phy

1
Theo bug.eclipse.org/bugs/show_bug.cgi?id=76936, bản sửa lỗi được lên kế hoạch cho Eclipse 4.6 với ngày phát hành mục tiêu là ngày 22 tháng 6 năm 2016 ( project.eclipse.org/projects/eclipse/releases/4.6.0 / kế hoạch ). : /
simon

8

Vâng, đúng là bạn không thể sử dụng backspace \ b để xóa tiến trình được hiển thị, nhưng bạn có thể xóa nó bằng cách xóa bảng điều khiển với vòng lặp gọi println. Tất nhiên kluge này sẽ không xóa tệp nhật ký của bạn!


"Xóa bảng điều khiển với ...." chính xác là như thế nào? println () không thể xóa dòng đã in trên bảng điều khiển!
KNU

1
Nó có thể đẩy đầu ra đã được in lên trên để nó thoát ra khỏi vùng hiển thị của bảng điều khiển, xóa bảng điều khiển một cách hiệu quả.
simon

3

Đã sửa, Eclipse Mars.

Lưu ý, tôi sẽ không sử dụng nó để cập nhật liên tục, vì bảng điều khiển eclipse bị trễ.


6
Unfixed trong Neon.3 ( System.out.println("x\by")).
Matthieu

2

Bây giờ họ đã sửa nó, nhưng nó bị tắt theo mặc định. Bạn nên kích hoạt nó thông qua Interpret ASCII control characterstùy chọn bảng điều khiển.


-4

sử dụng: System.out.print ("\ b") bên trong vòng lặp while, thay vì System.out.print ('\ b');

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.