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 に答える
0

これはカスタムコンポーネントでしかできないと思います。

これはHideableTabbedPaneのAPIです

于 2012-10-29T05:12:07.437 に答える
0

解決策 1:- x の値を 1 から開始して、0 から開始して x>1 をチェックするのではなく、0 をスキップしないのはなぜですか...

解決策 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 に答える