Установить видимость определенных вкладок в JTabbedPane
Как я могу установить некоторые из вкладок в JTabbedPane
невидимый? Я пытался с помощью JTabbedPane#getTabComponentAt(index).setVisible(false);
, но бросает NullPointerException
, Я могу отключить вкладки, но не сделать их невидимыми.
SSCCE:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
public class Main {
public static void main(String[] args) {
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setPreferredSize(new Dimension(400, 100));
for (int i = 0; i < 7; i++)
tabbedPane.add("tab " + i, new JLabel("content " + i));
// this throws a NullPointerException
tabbedPane.getTabComponentAt(1).setVisible(false);
// this works
tabbedPane.setEnabledAt(1, false);
JFrame frame = new JFrame();
frame.setContentPane(tabbedPane);
frame.pack();
frame.setVisible(true);
}
}
Я не могу узнать, что я делаю не так.
1 ответ
См. Javadoc соответствующего установщика:
Устанавливает компонент, который отвечает за отображение заголовка для указанной вкладки. Нулевое значение означает, что JTabbedPane будет отображать заголовок и / или значок для указанной вкладки. Ненулевое значение означает, что компонент будет отображать заголовок, а JTabbedPane не будет отображать заголовок и / или значок.
Итак JTabbedPane#getTabComponentAt(index)
метод возвращает Component
используется для отображения вкладки, если вы ее установили, в противном случае она использует метку и / или значок.
Не уверен, что вы можете сделать вкладку невидимой, но, черт возьми, вы можете удалить их и вставить их. Это может быть приемлемым решением