私はJavaを使い慣れていません。スイングでCardLayout
を使ってナビゲーションを行っています。基本的に私はJFrame
に2つのボタンがあります。ボタン1つをクリックするとカード1に行きます。JPanel
、card1
に2つのボタンをつけています。別のボタンをクリックするとカード2に行きます。JTextField
パネル上card2
。しかし、それは起こっていません。CardLayout上のJPanel Swing Java
誰でも修正できますか?
私のコードは以下の通りです。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CardLayoutTest extends JFrame implements ActionListener {
JFrame f;
JButton b;
JButton c;
JPanel panel;
JPanel cards;
JPanel card1;
JPanel card2;
CardLayout card;
Container pane;
final String card1Text = "One";
final String card2Text = "Two";
CardLayoutTest() {
}
public void passBtn() {
f=new JFrame("Card Layout Test");
card1 = new JPanel();
card1.add(new JButton("Button 1 - Card 1"));
card1.add(new JButton("Button 2 - Card 1"));
card1.setBackground(new Color(255,0,0));
card2 = new JPanel();
card2.add(new JTextField("TextField on Card 2", 20));
card2.setBackground(new Color(0,255,0));
//Create the panel that contains the "cards".
cards = new JPanel(new CardLayout());
cards.add(card1, card1Text);
cards.add(card2, card2Text);
b = new JButton("Page 1");
b.setBounds(50,50,70,30);
b.setBackground(Color.red);
c = new JButton("Page 2");
c.setBounds(50,80,70,30);
c.setBackground(Color.blue);
pane = f.getContentPane();
pane.add(cards, BorderLayout.CENTER);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
card.show(card1, card1Text);
}
});
c.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
card.show(card2, card2Text);
}
});
f.add(b); f.add(c); f.add(panel); f.add(cards);
}
public static void main(String[] args) {
new CardLayoutTest();
}
}
あなたがここを見てなかった:HTT ps://docs.oracle.com/javase/tutorial/uiswing/layout/card.html? – XtremeBaumer
'card'を決して初期化しないので、あなたはNullPointerExceptionsを取得していると思います。どこでも 'card'を使うことはありません。 – VGR