2016-07-26 5 views
0

다음 버튼을 누르면 고객 페이지로 이동하지만 버튼을 클릭해도 아무런 변화가 없습니다.카드 레이아웃을 사용하여 패널을 전환하지만 버튼을 누른 후에 특정 패널을 표시하려고하면 아무 것도 발생하지 않습니다.

이것은 내 코드 패키지 javaapplication1;

import javax.swing.*; 
import java.lang.*; 
import java.awt.*; 
import java.awt.Color; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import javax.swing.JFrame; 

public class Test extends javax.swing.JPanel implements ActionListener{ 

JButton firstButton, lastButton, nextButton, previousButton; 
JPanel cardPanel; 
String cardNames[] = new String[3]; 
int cardCounter = 0; 

public JPanel createContentPane(){ 

    JPanel totalGUI = new JPanel(); 

    JPanel buttonPanel = new JPanel(); 
    buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS)); 

    buttonPanel.add(Box.createRigidArea(new Dimension(10,0))); 

    previousButton = new JButton("<- Previous"); 
    previousButton.addActionListener(this); 
    buttonPanel.add(previousButton); 
    buttonPanel.add(Box.createHorizontalGlue());   

    firstButton = new JButton("First"); 
    firstButton.addActionListener(this); 
    buttonPanel.add(firstButton); 
    buttonPanel.add(Box.createHorizontalGlue()); 

    lastButton = new JButton("Last"); 
    lastButton.addActionListener(this); 
    buttonPanel.add(lastButton); 
    buttonPanel.add(Box.createHorizontalGlue()); 

    nextButton = new JButton("Next ->"); 
    nextButton.addActionListener(this); 
    buttonPanel.add(nextButton); 
    buttonPanel.add(Box.createRigidArea(new Dimension(10,0))); 

    JPanel Shop = new JPanel(); 
    Shop panel1 = new Shop(); 
    Shop.add(panel1); 

    JPanel Items = new JPanel(); 
    Items panel2 = new Items(); 
    Items.add(panel2); 

    JPanel Customers = new JPanel(); 
    Customers panel3 = new Customers(); 
    Customers.add(panel3); 

    cardPanel = new JPanel(new CardLayout(150, 50)); 

    cardNames[0] = "Component.CENTER"; 
    cardNames[1] = "Component.BOTTOM_ALIGNMENT"; 
    cardNames[2] = "Component.TOP_ALIGNMENT"; 

    cardPanel.add(Shop, cardNames[0]); 
    cardPanel.add(Items, cardNames[1]); 
    cardPanel.add(Customers, cardNames[2]); 

    JPanel bottomPanel = new JPanel(); 
    bottomPanel.setLayout(new BorderLayout()); 

    bottomPanel.add(cardPanel, BorderLayout.CENTER); 
    bottomPanel.add(buttonPanel, BorderLayout.PAGE_START); 

    totalGUI.add(bottomPanel); 
    return totalGUI; 
} 

public void actionPerformed(ActionEvent e) { 


    if(e.getSource() == nextButton) 
    { 
     CardLayout cl = (CardLayout)(cardPanel.getLayout()); 

     cl.show(cardPanel, "Customers"); 
    } 
    /* 
    if(e.getSource() == firstButton) 
    { 
     cl.first(cardPanel); 
     cardCounter = 0; 
    } 
    else if(e.getSource() == lastButton) 
    { 
     cl.last(cardPanel); 
     cardCounter = 2; 
    } 
    else 
    } 
    else if(e.getSource() == previousButton) 
    { 
     cl.previous(cardPanel); 
     if(cardCounter > 0) 
     { 
      cardCounter--; 
     } 
     else 
     { 
      cardCounter = 2; 
     }*/ 
    } 


protected static void createAndShowGUI() { 

    JFrame.setDefaultLookAndFeelDecorated(true); 
    JFrame frame = new JFrame(""); 

    Test demo = new Test(); 
    frame.setContentPane(demo.createContentPane()); 

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

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 

}

왜이 사건인가? 내가 놓친 게 있니? 저는 Cardlayout을 처음 사용하면서 완전히 작동하지 않습니다.

답변

0

의심스러운 경우 documentation을 확인하십시오. CardLayout.addLayoutComponent에서

:

문자열이어야합니다 constraints에 의해 지정된 객체입니다. 카드 레이아웃은이 문자열을 특정 카드에 대한 임의 액세스에 사용할 수있는 키 - 값 쌍으로 저장합니다. show 메서드를 호출하면 응용 프로그램에서 지정된 이름의 구성 요소를 표시 할 수 있습니다. 즉

는 문자열 당신은 CardLayout에 구성 요소를 추가 할 때 제약 조건으로 제공되는 문자열 중 하나에 동일해야 CardLayout.show을 전달합니다. 사용중인

제약은 다음과 같습니다

  • "Component.CENTER"
  • "Component.BOTTOM_ALIGNMENT"
  • "Component.TOP_ALIGNMENT"이 일치

없음 무엇을 CardLayout.show로 전달 중입니다 :

cl.show(cardPanel, "Customers");