如何在JTabbedPane中隐藏选项卡式面板?

时间:2012-10-29 04:52:56

标签: java swing

我有:

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

将灰显, 但我想完全隐藏它,以便用户甚至不知道它甚至可能在软件中 。他们甚至不应该意识到它存在。

我不想做

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

因为我必须定期删除/添加。

4 个答案:

答案 0 :(得分:2)

唯一的方法是在您不想看到它时删除它,并在以后希望它可见时重新添加它。

答案 1 :(得分:1)

这项工作在我的项目中。

this.TabbedPane.setEnabledAt(1, false);

答案 2 :(得分:0)

我认为这只能通过自定义组件来完成。

这是HideableTabbedPane尝试的api

答案 3 :(得分: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 = ...