2014-11-16 2 views
1

사용자가 JFrame 내에서 버튼을 클릭 할 때 표시 할 JPanel을 만들려고합니다. Netbeans에서 처음으로 마법사를 사용하여 프로젝트에 새 JPanel을 추가 한 다음 GUI 작성자를 사용하여 모든 컨텐츠를 채 웁니다. 나는 에러가 발생되지 다음 코드JButton의 결과로 JFrame 표시?

private void m_jbShowSelAccResultsActionPerformed(java.awt.event.ActionEvent evt) 
{              
    Account selAcc = getSelectedAccount(); 
    if(selAcc != null) 
    { 
     AccountView accPanel = new AccountView(Account.getDeepCopy(selAcc)); 
     accPanel.setVisible(true); 
    } 
    else 
     ShowMessage("Please select an account to view"); 
}  

그러나 아무 일도 발생하지으로 JPanel을 표시하려고하고 있지 않다과 JPanel가 표시되지 않습니다. 그래서 JPanelJFrame으로 변경했습니다 (Netbeans은 불평하지 않았습니다). 동일한 코드로 다시 시도하면 GroupLayout can only be used with one Container at a time 오류가 발생합니다.

JPanel/JFrame을 어떻게 표시합니까?

답변

2
  1. Swing GUI 내에서보기를 변경하려면 CardLayout을 사용하십시오. 이렇게하는 것이 훨씬 강력하고 신뢰할 수있는 방법입니다.
  2. 맹목적으로 "JPanel을 JFrame으로 변경"하려고하지 마십시오. 네가 여기서 추측하는 것 같아.
  3. 오류 메시지가 표시되면 GroupLayout을 다시 사용할 수 없습니다. 이 오류는 위의 사항에서 비롯된 것 같습니다. JPanel에서 JFrame을 만들지 않으려면 오류 메시지가 사라집니다. 제쳐두고 GroupLayout은 수동으로 쉽게 사용되지 않습니다. 특히 이미 렌더링 된 GUI에 구성 요소를 추가하려는 경우에 특히 그렇습니다. 당신의 프로그램이 CardLayout을 사용 cardHolderPanel라고 말하는 인 JPanel을했다 경우에 따라서 예를 들어,이 변수가 보유

은 cardLayout라는 말, 당신은 이미 계정이 홀더에 "카드"JPanel을 추가했습니다 , accPanel라는 말과 accPanel가 현재 표시 계정을 설정하는 방법이 있다면, setAccount(Accoint a) 말, 당신은 쉽게 CardLayout show(...) 메서드를 호출하여 의견을 교환 할 수있는, 뭔가 같은 :

private void m_jbShowSelAccResultsActionPerformed(java.awt.event.ActionEvent evt) {              
    Account selAcc = getSelectedAccount(); 

    if(selAcc != null) { 
     accPanel.setAccount(Account.getDeepCopy(selAcc)); 
     cardLayout.show(cardHolderPanel, "Account View"); 
    } 
    else { 
     showErrorMessage("Please select an account to view"); 
    } 
} 
관련 문제