2013-04-30 3 views
0

Netbeans 6.9.1의 디자인보기를 사용하여 몇 가지 컨트롤이 포함 된 프레임을 디자인했습니다. 또한 빈 패널을 추가하여 버튼 클릭시 두 개의 스윙 구성 요소 표시를 전환하려고합니다. 문제는 버튼을 클릭 할 때 패널에 아무것도 표시되지 않는다는 것입니다.CardLayout 기존 프레임의 패널 표시 오류가 발생했습니다.

다음과
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    JPanel txtPanel = new JPanel(); 
    JPanel listPanel = new JPanel(); 

    JTextField txtfield = new JTextField("ABCDEFGHIJ", 20); 
    txtPanel.add(txtfield); 

    JList<String> list = new JList<String>(); 
    DefaultListModel<String> model = new DefaultListModel<String>(); 

    for (int i = 0; i < userCommands.size(); i++){ 
     model.addElement(userCommands.get(i)); 
    } 
    list.setModel(model); 
    listPanel.add(list); 

    jPanel2.add(listPanel, "list"); 
    jPanel2.add(txtPanel, "text"); 

    //MainUI.getFrames()[0].add(jPanel2, BorderLayout.CENTER); 

    itemStateChanged("text"); 
} 

itemStateChanged에 대한 코드가 될 때 : 다음과 같이 코드는

코드의 첫 번째 부분에서
public void itemStateChanged(String disp) { 
    CardLayout cl = (CardLayout)(jPanel2.getLayout()); 
    cl.show(jPanel2, disp); 
} 

jPanel2 드래그 및 기타 구성 요소를 포함하는 프레임에 삭제, 내가 무엇을하려합니다 여기를 달성하려면 버튼 클릭시에 jPanel2이 텍스트 필드와 목록 사이를 전환해야합니다. 그러나 현재 패널은 버튼 클릭시 아무 것도 표시하지 않습니다.

+0

를 [SSCCE] (http://sscce.org/) 확장합니다. –

답변

0

jPanel2가 다른 패널 (다른 카드)간에 전환 할 수 있는지 고려하기 전에 jPanel2가 전혀 표시되지 않습니까? jPanel2를 표시하는 유일한 코드는 MainUI에 추가하는 코드이지만 주석 처리되어 있습니까? 그렇다면 jPanel2의 디스플레이가 전환되지 않는다는 것을 어떻게 알 수 있습니까?

+0

jPanel2가 MainUI에 드래그 - 드롭되었습니다.이 코드는 드래그 - 드롭되었으므로 MainUI 프레임에 다시 추가 할 필요가 없기 때문에 주석 처리했습니다 ... 저는 생각합니다. 버튼을 누르면 JPanel2의 영역이 그대로 유지되므로 전환하지 않습니다 ... 아무 일도 일어나지 않으며 텍스트 필드도 jlist도 표시하지 않습니다. –

+0

JFrame을 드래그 앤 드롭하는 데 많은 경험이 없으며 응용 프로그램의 나머지 부분에 어떤 영향을 미치는지 확신 할 수 없습니다. JFrame을 MainUI에 놓을 때 올바른 JPanel을 처리하는 MainUI가 있습니까? – tomgeraghty3

0

나는 당신을 위해 간단한 예제 코드를 만들었습니다. 한번보세요. 카드 레이아웃을 전역으로 정의하고 시도해야합니다.

import javax.swing.AbstractAction; 

공용 클래스 TestPanel는 JPanel에 더 도움이 빨리 들어, 게시 {

/** 
* Create the panel. 
*/ 
JPanel panel; 
CardLayout cl = new CardLayout(); 
public TestPanel() { 
    GridBagLayout gridBagLayout = new GridBagLayout(); 
    gridBagLayout.columnWidths = new int[]{0, 155, 0, 0}; 
    gridBagLayout.rowHeights = new int[]{94, 0, 0}; 
    gridBagLayout.columnWeights = new double[]{0.0, 0.0, 1.0, Double.MIN_VALUE}; 
    gridBagLayout.rowWeights = new double[]{1.0, 1.0, Double.MIN_VALUE}; 
    setLayout(gridBagLayout); 

    JButton btnNewButton = new JButton("New button"); 
    GridBagConstraints gbc_btnNewButton = new GridBagConstraints(); 
    gbc_btnNewButton.insets = new Insets(0, 0, 5, 5); 
    gbc_btnNewButton.gridx = 0; 
    gbc_btnNewButton.gridy = 0; 
    add(btnNewButton, gbc_btnNewButton); 
    btnNewButton.setAction(new AbstractAction("New button") { 

     @Override 
     public void actionPerformed(ActionEvent arg0) { 
      JPanel txtPanel = new JPanel(); 
      JPanel listPanel = new JPanel(); 

      JTextField txtfield = new JTextField("ABCDEFGHIJ", 20); 
      txtPanel.add(txtfield); 

      JList<String> list = new JList<String>(); 
      DefaultListModel<String> model = new DefaultListModel<String>(); 

      for (int i = 0; i < 3; i++){ 
       model.addElement("Sanjaya"); 
      } 
      list.setModel(model); 
      listPanel.add(list); 

      panel.add(listPanel, "list"); 
      panel.add(txtPanel, "text"); 

      //MainUI.getFrames()[0].add(jPanel2, BorderLayout.CENTER); 

      itemStateChanged("list"); 

     } 
    }); 

    JTextArea textArea = new JTextArea(); 
    textArea.setLineWrap(true); 
    GridBagConstraints gbc_textArea = new GridBagConstraints(); 
    gbc_textArea.insets = new Insets(0, 0, 5, 5); 
    gbc_textArea.fill = GridBagConstraints.BOTH; 
    gbc_textArea.gridx = 1; 
    gbc_textArea.gridy = 0; 
    add(textArea, gbc_textArea); 

    panel = new JPanel(cl); 
    GridBagConstraints gbc_panel = new GridBagConstraints(); 
    gbc_panel.insets = new Insets(0, 0, 5, 0); 
    gbc_panel.fill = GridBagConstraints.BOTH; 
    gbc_panel.gridx = 2; 
    gbc_panel.gridy = 0; 
    add(panel, gbc_panel); 

} 
    public void itemStateChanged(String disp) { 


     cl.show(panel, disp); 
    } 

}

+0

또한 jPanel2를 JPanel로 생성 해보십시오. jPanel2 = new JPanel (cl); –