Tôi có một ứng dụng xoay trong đó tôi hiển thị hình ảnh trong một JPanel. Nếu ứng dụng không thể tạo hình ảnh tôi muốn xóa hình ảnh trước đó khỏi JPanel và thay thế bằng JTextField và tin nhắn. Tôi có thể thêm các trường văn bản, nhưng nó được vẽ trên đầu trang của các nội dung trước đó, mà chính nó là một phân lớp của JPanel. Dưới đây là những gì tôi có:JPanel removeAll không loại bỏ các thành phần trước
private void displayMessage(String message) {
JTextField tf = new JTextField(message);
cdPanel.removeAll();
cdPanel.add(tf, BorderLayout.NORTH);//tried lots of variations, inc. no layout
cdPanel.validate();
}
Làm thế nào tôi có thể nhận được cdPanel để vẽ lại hoàn toàn chính nó?
Had bạn đã thử gọi 'cdPanel.revalidate(); cdPanel.repaint() 'thay vì' cdPanel.validate() '? Hơn nữa, các hình ảnh được hiển thị trên 'JPanel' này như thế nào? Bạn đang sử dụng 'JLabel' hoặc vẽ chúng trực tiếp trên' JPanel'? –
@ nIcEcOw cảm ơn, hoạt động hoàn hảo. Xin vui lòng gửi vì vậy tôi có thể đánh dấu của bạn như là câu trả lời :-) – jaybee
Bạn MOST WELCOME và KEEP SMILING :-) Nhưng Xin vui lòng từ thời gian tới, cố gắng cung cấp thông tin đầy đủ, như thể bạn đang giải thích nó cho một đứa trẻ, __, __What bạn đang làm gì? __, __What bạn mong đợi? __ và __What chính xác đã xảy ra? __ Bằng cách này, người trả lời sẽ có thể cung cấp cái nhìn sâu sắc tốt hơn về tình hình nhất định :-) –