3

我有:

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

4 回答 4

3

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

于 2013-01-26T17:25:03.197 回答
2

这项工作在我的项目中。

this.TabbedPane.setEnabledAt(1, false);
于 2015-04-07T13:05:08.930 回答
0

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

这是HideableTabbedPane的 api试试

于 2012-10-29T05:12:07.437 回答
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 = ...
于 2012-10-29T05:16:52.570 回答