无法创建嵌套标签

时间:2017-07-23 23:30:45

标签: java swing jtabbedpane

我正在尝试创建一个具有一个主Tab的程序,最终我将添加更多,然后在主Tab中取代的面板中应该有4个Tabs。这是我正在尝试和自学java的项目,所以我只想要一些见解。

import javax.swing.*;

public class logBook extends JFrame{

    public logBook(){
        this.setSize(300,300);
        this.setVisible(true);
        this.setLocationRelativeTo(null);
        JPanel mainPanel = new JPanel();
        JTabbedPane raidSectionsPane = new JTabbedPane();
        raidSectionsPane.addTab("Deltascape",mainPanel);
       JPanel deltascapePanel = new JPanel();
       JTabbedPane deltascapeSections = new JTabbedPane();
       deltascapeSections.addTab("V1.0",deltascapeSections);
        raidSectionsPane.add(deltascapePanel);
        this.add(raidSectionsPane);




    }
    public static void main(String[] args){
        logBook logger = new logBook();
        logger.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

基本上我有点失落我猜这是因为我对Frames / panes / panel缺乏了解。 如果我理解正确的框架是所有内容都在其中的主要容器,而面板是框架中将显示程序其他部分的部分。我对什么是窗格感到困惑。

但我无法了解如何嵌套标签。

2 个答案:

答案 0 :(得分:1)

首先,我花了一点时间阅读How to Use Tabbed Panes

JTabbedPane仍然只是另一种类型的组件,因此您可以使用addTab方法

添加任何其他组件的方式添加它

Embedded TabPanes

JTabbedPane outter = new JTabbedPane();
JTabbedPane inner = new JTabbedPane();
inner.addTab("Inner Tab", new JPanel());
outter.addTab("Outter Tab", inner);

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(outter);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

我会小心这样做,因为它可能在视觉上让用户感到困惑(恕我直言)

答案 1 :(得分:0)

请参阅此代码:

JPanel mainPanel = new JPanel();
JTabbedPane raidSectionsPane = new JTabbedPane();
raidSectionsPane.addTab("Deltascape", mainPanel);
JPanel deltascapePanel = new JPanel();
JTabbedPane deltascapeSections = new JTabbedPane();
deltascapeSections.addTab("V1.0", deltascapePanel);
mainPanel.add(deltascapeSections);
this.add(raidSectionsPane);
}

您需要将deltascapeSections添加到mainPanel,将mainPanel添加到deltascapeSections

See this image here