gpt4 book ai didi

java - 如何在 CardLayout 中显示特定的滚动 Pane ?

转载 作者:行者123 更新时间:2023-12-01 11:28:04 27 4
gpt4 key购买 nike

我有 JPanel 组件列表。我想通过单击按钮打开相应的面板。单击按钮时,我传递面板名称。但就我而言,面板有更多组件,因此我将每个面板添加到 JScrollPane 并将这些滚动 Pane 添加到 CardLayout

基于此example ,以下是将面板添加到卡片布局的代码:

final JPanel  cards=new JPanel(new CardLayout());
cards.setPreferredSize(new Dimension(600, 550));
for (JPanel p:panels) {
JScrollPane scrollPanel=new JScrollPane(p);
scrollPanel.setName(p.getName());
scrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
cards.add(scrollPanel);
}
CardLayout cardLayout=(CardLayout) cards.getLayout();
cardLayout.show(cards, "name");

control.add(new JButton(new AbstractAction("\u22b2Prev") {

@Override
public void actionPerformed(ActionEvent e) {
CardLayout cl = (CardLayout) cards.getLayout();
cl.previous(cards);
}
}));

control.add(new JButton(new AbstractAction("Next\u22b3") {

@Override
public void actionPerformed(ActionEvent e) {
CardLayout cl = (CardLayout) cards.getLayout();
cl.next(cards);
}
}));

但是单击按钮会显示卡片布局中的第一个面板。

如何解决这个问题?我可以在 show 方法中使用滚动 Pane 名称而不是面板名称吗?

最佳答案

是的,你是对的。

滚动 Pane 可以直接添加到卡片布局中:

JPanel myPanel = new JPanel();
JScrollPane myScroll = new JScrollPane(myPanel);
this.add(myScroll, "NAME");
CardLayout cl = (CardLayout) this.getLayout();
cl.show(this, "NAME");

关于java - 如何在 CardLayout 中显示特定的滚动 Pane ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com