私はこのコードを使用するコードの例を見て:CardLayoutで別のカードを表示するには?
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);
}
}
新しいコードをお寄せいただきありがとうございます。それはうまくいっている!しかし、あなたが追加したいくつかの行については、次のようにいくつか疑問があります:private static final long serialVersionUID = 1L; Eclipseで黄色い三角形を削除したのがわかりますが、それは何ですか?そして、あなたはまたこの行を置き換えました:getContentPane()。add(cardPanel、BorderLayout.NORTH);これをwhith:add(cardPanel、BorderLayout.NORTH);違いは何ですか?そして最後にあなたも親切で、あなたが主な方法でやったことを説明することができますか?ありがとう! –