【问题标题】:How to navigate to previous card with button in card layout?如何使用卡片布局中的按钮导航到上一张卡片?
【发布时间】:2018-08-31 11:03:13
【问题描述】:

我在 Netbeans 中创建了一个 Java 应用程序,并使用CardLayout 制作了三张卡片,当我单击三个按钮时会出现这些卡片。

一切都很好,但我想制作一个“后退”图标,点击该图标时会显示上一张卡片,这样如果我在第三张卡片中,点击“后退”图标会显示第二张卡片,并从第二张卡到第一张,依此类推。

问题是我希望程序知道我们在第二张卡片中,所以点击“后退”图标会显示第一张卡片。

同样,后退图标位于同一JFrame 的另一个面板上。希望有人帮忙!

左下角的图标是返回按钮 卡片位于白色部分内。

【问题讨论】:

  • 为了尽快获得更好的帮助,请发布minimal reproducible exampleShort, Self Contained, Correct Example,如this answer 所示(也使用卡片布局)。
  • 基本上你需要传递Container和Layout对象然后使用CardLayout#previous
  • @KDM 感谢您的回答,但我实际上并没有明白您的意思。你知道,我只是一个初学者
  • @Nishan 发布您的代码。截图没有帮助:)

标签: java swing layout-manager cardlayout


【解决方案1】:

我想在您的项目中某处您已经拥有以下代码片段:

用于构建右侧的面板(带有CardLayout 的面板):

JPanel panel1 = ...;
JPanel panel2 = ...;
JPanel panel3 = ...;
JPanel rightPanel = new JPanel();
CardLayout cardLayout = new CardLayout();
rightPanel.setLayout(cardLayout);
rightPanel.add(panel1);
rightPanel.add(panel2);
rightPanel.add(panel3);

用于构建“返回”按钮(带有<- 图标的按钮):

JButton backButton = ...;

那么你只需要添加以下内容:

backButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        cardLayout.previous(rightPanel);    
    }
});

或者等效地,如果您更喜欢 Java 8 的简洁 lambda 语法:

backButton.addActionListener(e -> cardLayout.previous(rightPanel));

【讨论】:

  • 我应该在哪里添加代码?比如,源代码在哪里?
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2017-06-10
  • 2015-05-21
  • 1970-01-01
  • 2019-11-04
  • 2016-04-21
相关资源
最近更新 更多