2012-02-08 26 views
5

Tôi đang triển khai phiên bản đặc biệt của JTextField và muốn đóng gói nó thành một bean riêng. Đậu hoạt động khá tốt cho đến nay. Đây là câu hỏi của tôi:Hiển thị sự kiện cho JTextField trong Java?

Làm thế nào tôi có thể phát hiện khi JTextField được hiển thị? Vì vậy, tôi có thể bắt đầu một số công cụ đồ họa mỗi khi các trường được hiển thị.

Sự kiện ShowComponent không hoạt động đối với tôi. FocusGained và FocusLost hoạt động tốt.

Hy vọng có ai đó biết giải pháp này.

Trả lời

4

Bạn có thể sử dụng phương thức isShowing() không? http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#isShowing%28%29

+0

hoặc trình bổ sung addComponentListener (...) để theo dõi các thay đổi trong chế độ hiển thị – alex

+0

@alex - chủ yếu không giúp ích: một componentEvent được kích hoạt khi trạng thái của thuộc tính nhìn thấy thay đổi. Vì thuộc tính đó là đúng theo mặc định, nó không được kích hoạt khi chúng ta trực giác mong đợi nó :-) – kleopatra

+0

cảm ơn rất nhiều vì đã trả lời nhanh! – salocinx

2

Khi sử dụng ComponentListener và thực hiện các công cụ trong thành phần của nóHiển thị trực giác dường như là cách để đi, nó không hữu ích: nó kích hoạt khi thuộc tính hiển thị của thành phần bị thay đổi. Thuộc tính đó là đúng theo mặc định (ngay cả khi chưa được thêm vào bất kỳ vùng chứa nào hiển thị trên màn hình), và do đó không có gì được hiển thị ..

Thay vào đó, hãy sử dụng AncestorListener và thực hiện những gì cần thiết trong tổ tiên của nó.

+0

+1 không bao gồm ---> hãy đặt câu hỏi, tại sao lý do trên thế giới này bạn đề xuất thêm Tổ tiên cho J (Định dạng) TextField – mKorbel

+0

@mKorbel không hiểu ý bạn là gì: câu hỏi (như tôi đã hiểu, có thể sai) là để được thông báo khi trường được hiển thị (aka: thêm) – kleopatra

+0

hmmm cảm ơn bạn, tôi đã thử những gì sẽ được happends thêm J (Formatted) TextField để un_visible Container trước, sau đó để dispay container này – mKorbel

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