Giả sử chúng ta có ứng dụng Swing sau:Detect nếu Java thành phần Swing đã được ẩn
final JFrame frame = new JFrame();
final JPanel outer = new JPanel();
frame.add(outer);
JComponent inner = new SomeSpecialComponent();
outer.add(inner);
Vì vậy, trong ví dụ này, chúng ta chỉ cần có một bảng điều khiển bên ngoài trong khung và một thành phần đặc biệt trong bảng điều khiển. Thành phần đặc biệt này phải làm điều gì đó khi nó được ẩn và hiển thị. Nhưng vấn đề là setVisible() được gọi trên bảng điều khiển bên ngoài chứ không phải trên thành phần đặc biệt. Vì vậy, tôi không thể ghi đè lên phương thức setVisible trong thành phần đặc biệt và tôi cũng không thể sử dụng một trình lắng nghe thành phần trên nó. Tôi có thể đăng ký người nghe trên thành phần phụ huynh nhưng nếu bảng điều khiển bên ngoài cũng nằm trong một bảng điều khiển khác và bảng điều khiển bên ngoài bên ngoài này bị ẩn?
Có giải pháp dễ dàng hơn đệ quy thêm bộ lắng nghe thành phần cho tất cả các thành phần chính để phát hiện thay đổi mức hiển thị trong SomeSpecialComponent không?
Sự kiện này không được kích hoạt khi phụ huynh thành phần bị ẩn, nó chỉ được kích hoạt khi phương thức setVisible() của chính thành phần đặc biệt được gọi. Như tôi đã nói, tôi đang tìm kiếm một giải pháp mà EASIER sau đó đệ quy gắn vào các sự kiện componentListener của tất cả các thành phần cha. – kayahr
Tôi thấy sự cố ngay bây giờ :-) câu trả lời mới sắp tới ... – aioobe