2012-02-15 82 views
3

我有一個Swing JTabbedPane,帶有多行選項卡,它們顯示來自我應用程序各個部分的摘要信息。 我想讓用戶雙擊任何選項卡以在窗口中顯示完整的內容,但當在除第一行之外的任何選項卡上的標籤上檢測到第一次單擊時,標籤行將四處移動。第二次點擊被檢測爲雙擊,但現在光標下方有一個不同的標籤(由於原始標籤行被移到前面),並顯示錯誤的窗口。如何防止JTabbedPane使用選項卡行重新排序行選項卡?

如何防止選項卡行重新排序,或者,如何輕鬆地允許用戶在單擊任何給定選項卡時查看關聯數據?

編輯:試圖闡明:行的移動,而不是行內標籤的移動。

+2

使用Metal LAF時看不到這種行爲。這個標籤沒有重新排序。發佈證明問題的SSCCE。但是,我不認爲這應該是一個選項卡的功能。如果您想要有詳細視圖,請在添加到選項卡的面板中添加一個「詳細信息」按鈕。 – camickr 2012-02-15 01:13:09

+0

我可能沒有清楚:如果我點擊第三行中的一個標籤,該行就會移動成爲第一行,導致光標現在位於不同標籤的上方,這是現在第一行第三排。 – oldingn 2012-02-15 17:22:20

回答

0

爲回答我自己的問題抱歉,但我的問題的簡單解決方法是捕獲我的MouseAdapter第一次點擊標籤索引,並使用捕獲的值,而不是tabPane雙擊工作。 getSelectedIndex()即電流在檢測到第二次點擊:

if (evt.getClickCount() == 1 && evt.getComponent() == tabPane) { 
    currentTabIndex = tabPane.getSelectedIndex(); 
} 
else if (evt.getClickCount() == 2 && evt.getComponent() == tabPane) { 
    setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
       //double-clicked a tab 
... {snip} 
} 

這並不妨礙的標籤排被四處移動,但首次點擊選項卡中選擇用於顯示,由用戶按預期方式。如同camickr建議的那樣(謝謝!),另外,爲用戶提供單獨的可點擊控件以請求完全顯示標籤頁的內容可能比這種笨拙的雙擊行爲更可取。

相關問題