2012-10-29 69 views
1

我:如何隱藏JTabbedPane中的選項卡面板?

JTabbedPane jtabbedPane = new JTabbedPane(); 
jTabbedPane.addTab("Tab 1", panel1); 
jTabbedPane.addTab("Tab 2", panel2); 
jTabbedPane.addTab("Tab 3", panel3); 

我想要做的就是隱藏選項卡2時,情況發生時(比如用戶不允許訪問標籤面板

是的,我知道你可以做到:

jtabbedPane.setEnabled(1, false); // disable Tab 2 

將灰色出來,但我想完全隱藏,這樣用戶甚至不知道它在軟件甚至可能:T嘿,不應該知道它存在。

我不想做

jtabbedPane.remove(1); // remove Tab 2 

,因爲我那麼必須刪除/添加定期。

+1

*「我想完全刪除」*但*「我不想做(使用)'jtabbedPane.remove'」*。我認爲你已經進入了22位。 – MadProgrammer

+0

對不起,我的意思是說隱藏。我編輯了這個問題。 –

+1

難道避免在第一個地方添加標籤嗎? –

回答

1

的唯一方法是刪除它,當你不希望看到它,如果您希望可見,請在稍後重新添加。

0

我認爲這隻能由自定義組件完成。

這裏是一個API,用於HideableTabbedPane嘗試

+0

源或jar在哪裏?它不是標準JDK的一部分 –

+0

它是一個私人開發人員,而不是標準的類。 – Mordechai

0

解決方案1: -你爲什麼不只是在1值啓動x,所以它跳過0,而不是從0開始檢查X > 1 ...

解決方案2: - [http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#tabapi][1]

[1] :http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#tabapi使用該鏈接。

解決方案3: - 你可以做這樣的事情,這只是沒有粉刷tabArea

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
class Testing { 
public void buildGUI() { 
JTabbedPane tp = new JTabbedPane(); 
tp.addTab("A",getPanel("A")); 
tp.addTab("B",getPanel("B")); 
tp.addTab("C",getPanel("C")); 
tp.setUI(new javax.swing.plaf.metal.MetalTabbedPaneUI(){ 
protected void paintTabArea(Graphics g,int tabPlacement,int selectedIndex){} }); 
JFrame f = new JFrame(); 
f.getContentPane().add(tp); 
f.pack(); 
f.setLocationRelativeTo(null); 
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
f.setVisible(true); 
} 
public JPanel getPanel(String tabText) 
{ 
JPanel p = ... 
+0

問題是,如果你覆蓋了paintTabArea,你就會認爲你知道L&F UI管理器(你正在使用默認的Java L&F UI管理器,我不是 - 他們看起來不太好)。但是,如果您有自定義的或不同的,這取決於操作系統,此代碼可能會很快變得非常複雜,無法維護。如果L&F改變了,這將是一個難以發現的難題。這是可能的,但如果我不得不選擇刪除標籤並重新添加它們,我只會做第一個。 –

1

這項工作在我的項目中。

this.TabbedPane.setEnabledAt(1, false); 
相關問題