gpt4 book ai didi

java - 如何在 CardLayout 中显示不同的卡片?

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:53 24 4
gpt4 key购买 nike

我看了一个使用这段代码的代码示例:

cl.show(cardPanel, "" + (currentCard));

但是当我使用 show 时,我在 Eclipse 中收到一条消息,表明它已被弃用,我想知道是否有另一种方法可以在我单击按钮时在 CardLayout 中显示不同的卡片?下面是我的 CardLayout 类的代码。如果代码的某些部分是不好的做法,也欢迎提出建议。谢谢!

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class CardLayoutTest extends JFrame implements ActionListener {

// Ref
private JPanel cardPanel, jp1, jp2, buttonPanel;
private JLabel jl1, jl2;
private JButton btn1, btn2;
private CardLayout cardLayout;

// Konstruktor
public CardLayoutTest()
{
setTitle("Test med CardLayout");
setSize(600,400);

cardPanel = new JPanel();
buttonPanel = new JPanel();

cardPanel.setLayout(cardLayout);

jp1 = new JPanel();
jp2 = new JPanel();

jl1 = new JLabel("Card 1");
jl2 = new JLabel("Card 2");

jp1.add(jl1);
jp2.add(jl2);

cardPanel.add(jp1, "1");
cardPanel.add(jp2, "2");

btn1 = new JButton("Show Card 1");
btn2 = new JButton("Show Card 2");

buttonPanel.add(btn1);
buttonPanel.add(btn2);

getContentPane().add(cardPanel, BorderLayout.NORTH);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);

btn1.addActionListener(this);
}

public void actionPerformed(ActionEvent event)
{
// ??? Show card 1 ???

// ??? Show card 2 ???
}

public static void main(String[] args) {
CardLayoutTest frame = new CardLayoutTest();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

最佳答案

编辑(我试过你的代码示例)

1.你忘了初始化最重要的变量

private CardLayout cardLayout = new CardLayout();

2.那么SSCCE可以是

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class CardLayoutTest extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel cardPanel, jp1, jp2, buttonPanel;
private JLabel jl1, jl2;
private JButton btn1, btn2;
private CardLayout cardLayout = new CardLayout();

public CardLayoutTest() {
setTitle("Test med CardLayout");
setSize(400, 300);
cardPanel = new JPanel();
buttonPanel = new JPanel();
cardPanel.setLayout(cardLayout);
jp1 = new JPanel();
jp2 = new JPanel();
jl1 = new JLabel("Card 1");
jl2 = new JLabel("Card 2");
jp1.add(jl1);
jp2.add(jl2);
cardPanel.add(jp1, "1");
cardPanel.add(jp2, "2");
btn1 = new JButton("Show Card 1");
btn1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
cardLayout.show(cardPanel, "1");
}
});
btn2 = new JButton("Show Card 2");
btn2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
cardLayout.show(cardPanel, "2");
}
});
buttonPanel.add(btn1);
buttonPanel.add(btn2);
add(cardPanel, BorderLayout.NORTH);
add(buttonPanel, BorderLayout.SOUTH);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
CardLayoutTest frame = new CardLayoutTest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}

关于java - 如何在 CardLayout 中显示不同的卡片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10823382/

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