나는 Java에 익숙하지 않고 Swing에서 CardLayout
을 통해 내비게이션을 만들고 있습니다. 기본적으로 나는 JFrame
에 두 개의 버튼이 있습니다. 하나의 버튼을 클릭하면 카드 1에 가야합니다. JPanel
, card1
에 두 개의 버튼을 유지하고 다른 버튼을 클릭하면 카드 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