#java #swing
#java #качать
Вопрос:
Я столкнулся с интересной вещью… Все идет нормально с нулевым объектом, когда я добавляю вкладки в конструктор как
public class TPane extends JTabbedPane
{
public TPane(ImageIcon iconA,ImageIcon iconB)
{
this.addTab("A",iconA,null);
this.addTab("B",iconB,null);
}
}
Но когда я пытаюсь добавить вкладку в другой объект, например
public class AClass
{
public void addNewTab(TPane tp, ImageIcon icon)
{
tp.addTab("C",icon,null);//<-- contains null
}
}
… он не добавляет вкладку из-за null . Хорошо, если я изменю значение null на, допустим, новый код JLabel() работает нормально: S
Здесь оба предыдущих использования объекта…
public class BClass extends JPanel
{
private AClass a=new AClass();
private TPane tp=new TPane();
JButton addTabButton=new JButton("add tab");
ImageIcon icon;
public BClass(Image image)
{
icon=new ImageIcon(image);
...
this.add(tp);
...
addTabButton.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
a.addNewTab(tp,icon);
}
});
}
}
Итак, мой вопрос в том, как динамически добавлять нулевой объект в JTabbedPane?
Приветствуется любой полезный комментарий
Комментарии:
1. Почему вы хотите добавить null в JTabbedPane в первую очередь? Если вы не хотите ничего отображать на вкладке, просто добавьте пустую JPanel.
2. И зачем его расширять? Пожалуйста, предоставьте sscce , который показывает проблему, которую вы описываете.
3. Просто потому, что я хочу использовать только вкладки JTabbedPane. Как палитра вкладок
Ответ №1:
Я не уверен, что это проблема. Я успешно попробовал это, см. Пример ниже и его код (хотя это патологический пример):
package so;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
public class JTabbedEx extends JTabbedPane {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ImageIcon icon = new ImageIcon();
JTabbedPane tabs = new JTabbedPane();
tabs.addTab("Tab1", icon,null);
new AnotherClass().addTab(tabs, icon);
JFrame frame = new JFrame();
frame.add(tabs);
frame.pack();
frame.setVisible(true);
}
});
}
}
class AnotherClass {
public void addTab(JTabbedPane tabs, ImageIcon icon) {
tabs.addTab("Another tab", icon, null);
}
}
Комментарии:
1. (ужасный значок null) скриншот 1
2. Спасибо 🙂 Но что может вызвать это? Я использую JDK 1.6
3. Пожалуйста, добавьте [SSCCE](sscce.org ). Это поможет нам обнаружить проблему.