2009-05-13 23 views

Trả lời

4

revalidate() về cơ bản là invalidate() theo sau là validate().

Xem mã nguồn Java của Sun.

Bạn muốn gọi revalidate().

+0

"về cơ bản" đang kéo dài nó. Nếu bạn làm một 'invalidate()' theo sau bởi một 'validate()', bạn sẽ không nhận được kết quả tương tự như 'revalidate()'. –

3

Tôi nghĩ rằng revalidate() là những gì bạn muốn. Phương thức validate() sẽ tự động được gọi cho bạn sau khi gọi lại để xác nhận lại(). See the Java API for JComponent.revalidate().

9

xác thực lại() sẽ tốt hơn. revalidate() đánh dấu tất cả các container lên đến mức cao nhất là không thích hợp hoặc không hợp lệ. Sau đó, nó gọi validate() ở cấp cao nhất. Phương thức validate() của cha/mẹ kiểm tra nếu ít nhất một trong số các con tức thời của nó được báo hiệu là không hợp lệ hoặc không đúng. nó gọi xác thực của phụ huynh. để gọi revalidate() tự động có nghĩa là gọi xác thực().

4

Ít nhất trong Java 7, revalidate() không nhất thiết phải "xóa" các thành phần đã xóa khỏi màn hình. Tôi tin rằng điều đó xảy ra khi hộp giới hạn co lại. Đối với những trường hợp này, hãy gọi repaint() sau số revalidate().

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