validate()
: Trong Swing khi bạn tạo một Component, điều đó không có valid
nghĩa là thuộc tính hợp lệ của nó false
. Một thành phần được cho là hợp lệ khi chiều rộng, chiều cao, vị trí và nội dung của nó đã được xác định. Điều này thường được thực hiện bằng cách gọi validate()
phương thức của họ , trực tiếp hoặc gián tiếp. Khi chúng ta gọi validate()
các vùng chứa, nó sẽ xác thực vùng chứa (nếu nó không hợp lệ) bằng cách gọi doLayout()
phương thức của nó , phương thức này thường sẽ gọi LayoutManager
. Bây giờ mỗi con được đặt trên vùng chứa này sẽ được xác thực đệ quy, do đó toàn bộ cây sẽ được bố trí và trở nên hợp lệ.
revalidate()
: revalidate()
được gọi khi bạn thay đổi một thuộc tính sẽ ảnh hưởng đến chiều rộng / chiều cao của chúng và gọi repaint () khi bạn thay đổi một thuộc tính sẽ ảnh hưởng đến sự xuất hiện của chúng. Ví dụ: nếu của bạn JFrame
có chứa một JPanel
, thì tại một thời điểm nhất định, bạn đã xóa cái đó JPanel
và chèn một cái mới vào vị trí của nó, tùy thuộc vào nội dung của tệp mới được đặt JPanel
, kích thước của các thành phần bên trong JPanel
cũng như The CONTAINER
chính nó (do của trình quản lý bố trí được sử dụng bởi nó), các thay đổi. Điều này đẩy nó đến trạng thái không hợp lệ. Vì vậy, để xác thực thay đổi này, bạn phải gọi một cách rõ ràng revalidate()
.
invalidate()
: Đây là thứ tôi chưa bao giờ sử dụng, vì vậy có thể không có nhiều thông tin tôi có thể cung cấp về nó. Nhưng có vẻ như các tình huống được trình bày ở trên có thể đưa ra một chút gợi ý, về những gì sẽ xảy ra khi sử dụng invalidate()
.
revalidate()
không gọidoLayout()
, màvalidate()
không. Vì vậy, nó không thực sự là tổng của cả hai -revalidate
không phải lúc nào cũng thay thế hợp lệ chovalidate
.