使用 CardLayout 在 Swing 中实现后退/前进按钮
问题:
在 Swing 中,用户正在寻找一种便捷的方式来实现前进和后退按钮,以便在不同部分之间导航一个图形用户界面。使用堆栈系统实现这一点的尝试尚未成功,他们对替代解决方案持开放态度。
答案:
而不是使用堆栈系统,考虑使用 CardLayout。这个布局管理器允许您通过简单的命令在不同的面板之间切换,非常适合创建前进/后退导航系统。
解决方案:
以下代码代码片段展示了如何使用 CardLayout 实现前进和后退按钮:
import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.util.Random; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class CardPanel extends JPanel { private static final Random random = new Random(); private static final JPanel cards = new JPanel(new CardLayout()); private final String name; public CardPanel(String name) { this.name = name; this.setPreferredSize(new Dimension(320, 240)); this.setBackground(new Color(random.nextInt())); this.add(new JLabel(name)); } @Override public String toString() { return name; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { create(); } }); } private static void create() { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for (int i = 1; i < 9; i++) { CardPanel p = new CardPanel("Panel " + String.valueOf(i)); cards.add(p, p.toString()); } JPanel control = new JPanel(); 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); } })); f.add(cards, BorderLayout.CENTER); f.add(control, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } }
此增强的解决方案为实现前进/后退按钮提供了更清晰、更灵活的方法在您的 Swing 应用程序中。
以上是如何使用 CardLayout 在 Swing GUI 中实现后退和前进按钮?的详细内容。更多信息请关注PHP中文网其他相关文章!