带有多个面板的Java Swing选项卡

时间:2015-05-27 13:38:08

标签: java swing tabs pane

当您按下(当前)面板内的按钮时,是否可以在选项卡内创建(新)面板?这样布局与(当前)面板不同?例如,按钮只是"下一个"。

我无法在谷歌上找到任何东西,我觉得我的方法是不可能的。我试图说明一张图片,但我没有足够的分数。

2 个答案:

答案 0 :(得分:3)

是的,这绝对是可能的,因为Tim B描述了使用CardLayout。看一下,也许这个例子会有所帮助。

 public class JavaApplication2 extends JFrame {

private JPanel mainPanel, cpOne, cpTwo;
private JButton btnContine, btnGoBack;
private CardLayout c1;

public JavaApplication2()
{
    super("Card Layout");
    mainPanel = new JPanel(new CardLayout());
    mainPanel.add(cardOne(), "card1");
    mainPanel.add(cardTwo(), "card2");
    c1 = (CardLayout) (mainPanel.getLayout());
    add(mainPanel);
    setSize(200,200);
    setVisible(true);


    btnContine.addActionListener((ActionEvent e) -> {
        c1.show(mainPanel,"card2");
    });
    btnGoBack.addActionListener((ActionEvent e) -> {
        c1.show(mainPanel,"card1");
    });
}

private JPanel cardOne()
{
    cpOne = new JPanel();
    btnContine = new JButton("Next Panel");
    cpOne.add(btnContine);
    cpOne.add(new JLabel("First Panel"));
    return cpOne;
}
 private JPanel cardTwo()
{
    cpTwo = new JPanel();
    btnGoBack = new JButton("Previous Panel");
    cpTwo.add(btnGoBack);
    cpTwo.add(new JLabel("SECOND PANEL!!!"));
    return cpTwo;
}
public static void main(String[] args) {

    JavaApplication2 jp = new JavaApplication2();
}

}

如果你看一下我的例子,我们只是创建一个框架并在这个框架中添加一个主面板。在那个主面板中,我们设置了一个CARD LAYOUT作为布局管理器。从这里我们可以添加尽可能多的心脏卡!因此,只需要一些小方法来制作带按钮的面板。我们将它们作为 mainPanel.add(cardOne,“card1”)添加到主面板中,方法是将该方法显示为添加为卡片然后将其命名为card1。当我们运行上述程序时,您会得到类似的结果:

enter image description here

点击按钮后我们得到了这个:

enter image description here

答案 1 :(得分:0)

是的,你可以轻松地做到这一点。使用CardLayout,将所需的所有面板放在该布局中,然后在按下按钮时在它们之间切换。

有关详情,请参阅此处:https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html