2011-04-28 108 views
2

我想跟蹤我的Java應用程序中所有組件的焦點。我註冊了一個適用於大多數組件的方法,但它不適用於更改選項卡。下面的代碼:跟蹤焦點問題(JTabbedPane)

FocusManager.getCurrentManager().addPropertyChangeListener(new PropertyChangeListener() { 
    @Override 
    public void propertyChange(PropertyChangeEvent evt) { 
    System.out.println(evt.getPropertyName() + " " + evt.getNewValue()); 
    } 
} 

如果我更改了一個JTabbedPane的一個標籤,它不會導致打印的消息。我懷疑這是由於JTabbedPane焦點未被更改(因爲單擊不同的選項卡可能意味着它仍然屬於父級JTabbedPane)。

有沒有解決方法,或者有沒有人知道一種保存方法來跟蹤Java中的焦點更改,該更改還適用於正在更改的選項卡?

乾杯, 最大

回答

1

你可以一個ChangeListener添加到標籤面板監聽在選項卡中的變化。

+0

我一直在尋找所有組件更通用的東西。 – Max 2011-05-07 03:41:49

+0

選項卡不是一個組件,因此不需要更改焦點來偵聽。與JTable中的每個單元不同,它不是一個組件。這些組件使用Action來導航組件。 – camickr 2011-05-07 04:57:16