【问题标题】:Java Swing Tabs with multiple panels [closed]具有多个面板的 Java Swing 选项卡 [关闭]
【发布时间】:2023-03-31 14:39:01
【问题描述】:

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

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

【问题讨论】:

    标签: java swing tabs pane


    【解决方案1】:

    是的,正如 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 设置为布局管理器。从这里我们可以添加任意数量的卡片!所以只有一些小方法可以让我们的面板带有按钮。我们将它们作为 ma​​inPanel.add(cardOne,"card1") 添加到主面板,方法是将方法显示为要添加为卡片的内容,然后将其命名为 card1。当我们运行上面的程序时,你会得到这样的结果:

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

    【讨论】:

    • 另见How to create great screenshots?(一些alt+print screen 操作会将这些图像完全裁剪为窗口大小。)
    • 哈哈在工作中,在飞行中剪断!已修复,现在截图很完美。
    • “已修复,现在屏幕截图很完美。” 好吧.. 现在你又想再次投票了! :)
    【解决方案2】:

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

    更多信息请参见:https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多