2012-04-14 49 views
0

我有一個帶有倍數Jlabels的左側面板,我使用它們作爲按鈕來更改用CardLayout佈局的主面板的內容。管理多個Jlabel的事件

enter image description here

我不能與這些事件完美地工作:

mouseEntered : to make highlight effect to the jlabel 
mouseExited : to take off the highlight effect. 
mouseClicked : to change the content of the main Panel and start some threads 

不能找到一個事件或方法,告訴我另一個JLabel的被點擊,所以我可以停在這裏的問題我線程開始在事件的mouseClicked,

OR

一個事件或方法告訴我CardLayout中的JPanel已被顯示或隱藏。

回答

0

您的問題未找到合適的事件。我認爲你正在使用一個可視化的GUI構建器來做這件事,並希望能夠解決所有的問題。它不會以這種方式工作,您需要編寫一些真實的代碼。例如,編寫一個方法,您將從三個JLabel中的每個JLabel的鼠標單擊偵聽器調用。因此,您將安排爲每個JLabel點擊調用此方法。然後在該方法中做適當的處理。這只是一個粗略的概述,你沒有提供更多的細節來給出進一步的建議。

+0

不,我沒有GUI構建工作,它不是指望解決所有問題外的開箱,我只是想知道的一個問題,如果有這樣的事件處理只是爲了讓它容易。我已經寫了一個方法,因爲你說,但它沒有幫助,因爲我重構我的代碼在多個類(每個卡的類)。 – 2012-04-14 11:40:42

+0

您是否在尋找全球性事件?一個可以在容器內的任何地方點擊的點火器?我相信AWT/Swing框架中沒有這樣的事件,與JavaScript/HTML不同。 – 2012-04-14 11:43:38

0

這聽起來像你需要FocusEventsFocusListeners。這些被所有JComponentsJPanelJLabelJButton,如通過調用addFocusListener();

基本上是一個FocusListener可以告訴你,當一個JComponent獲得焦點(如通過點擊JComponent),當它失去焦點(例如支持如通過點擊不同的JComponent)。

參考http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/FocusListener.html進一步的信息

+0

謝謝,但它沒有幫助,因爲當Jlabel1(例如)獲得焦點時,他可以通過在主面板中單擊來釋放他,而這不是我想要的。 – 2012-04-14 11:46:59