【发布时间】:2020-02-01 05:08:24
【问题描述】:
如何删除用户当前使用的卡。我知道如何使用下一个和上一个功能完成卡片布局,但是如何删除用户所在的当前帧?例如,如果我有一个程序,我目前在 5 个面板中的第 3 个面板上,我将如何删除当前的第 3 个面板。删除它后,下一个或上一个将替换它。我不认为 removecurrentlayout 可以使用,因为我没有删除组件。例如,在代码中,如果我在上面,我将如何删除 Card 3。
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CardLayoutProg {
public static void main(String[] args) {
JFrame frame = new JFrame("CardLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
JPanel buttonPanel = new JPanel();
JButton nextButton = new JButton("Next");
buttonPanel.add(nextButton);
contentPane.add(buttonPanel, BorderLayout.SOUTH);
final JPanel cardPanel = new JPanel();
final CardLayout cardLayout = new CardLayout();
cardPanel.setLayout(cardLayout);
for (int i = 1; i <= 5; i++) {
JButton card = new JButton("Card " + i);
card.setPreferredSize(new Dimension(200, 200));
String cardName = "card" + 123123;
cardPanel.add(card, cardName);
}
contentPane.add(cardPanel, BorderLayout.CENTER);
nextButton.addActionListener(e -> cardLayout.next(cardPanel));
frame.pack();
frame.setVisible(true);
}
}
【问题讨论】:
-
String cardName = "card" + 123123;为什么代码会循环添加同名卡片?更广泛地说,您为什么认为需要删除一张卡片?一旦被删除,应该出现什么?解决方案可能就像添加一个空白JPanel并在用户决定是时候“删除”现有卡(实际上不移除卡)时翻转到它一样简单,最好的操作可能是简单地更改将卡片中任何控件中显示的值恢复为默认值(例如,将信息提交到存储中)..
标签: java swing cardlayout