Java 带有多个面板的 Swing 标签
Java Swing Tabs with multiple panels
是否可以在(当前)面板内按下按钮时在选项卡内创建(新)面板?以便布局与(当前)面板不同?例如按钮只是 "next".
我在google上找不到任何东西,我觉得我的方法是行不通的。我试图说明它是哪张图片,但我没有足够的分数。
是的,您可以轻松做到这一点。使用 CardLayout
,将所有你想要的面板放在该布局中,然后在他们按下按钮时在它们之间切换。
有关详细信息,请参阅此内容:https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html
是的,这绝对是可能的,正如 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。当我们 运行 上面的程序时,你会得到这样的东西:
点击按钮后我们得到:
是否可以在(当前)面板内按下按钮时在选项卡内创建(新)面板?以便布局与(当前)面板不同?例如按钮只是 "next".
我在google上找不到任何东西,我觉得我的方法是行不通的。我试图说明它是哪张图片,但我没有足够的分数。
是的,您可以轻松做到这一点。使用 CardLayout
,将所有你想要的面板放在该布局中,然后在他们按下按钮时在它们之间切换。
有关详细信息,请参阅此内容:https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html
是的,这绝对是可能的,正如 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。当我们 运行 上面的程序时,你会得到这样的东西:
点击按钮后我们得到: