2012-12-25 4 views
-2

내 스윙 응용 프로그램에 JButton 세 개를 사용하고 있습니다. 각 버튼을 클릭하면 해당 데이터 (JTable의 형식은 JScrollPane)는 JPanel에 표시됩니다.마우스 클릭시 JPanel 데이터가 변경됨

문제점 : 정보 대신 JPanel이 기본 버튼 (내가 처음 클릭 한 버튼) 정보로 바뀌고 있습니다.

내 샘플 코드 :

 jbutton1.addActionListener(this); 
     jbutton2.addActionListener(this); 

    public void actioPerformed(ActionEvent e){ 
    if(e.getActionCommand.equals("button1")) 
    JPanel.add(table1); 
    } 
    if(e.getActionCommand.equals("button2")) 
    JPanel.add(table1); 
     }....... 
+3

더 많은 코드를 제공해야합니다. 문제의 실제 사례를 재현 할 수 있도록 충분히 제공하십시오. –

+1

코드가 여기에 게시되었습니다. 더 나은 도움을 위해 더 이상 설명되지 않은 문제에 대해 아무 말도하지 않습니다. [SSCCE] (http://sscce.org/), 짧고, 실행 가능한, 편집 가능한, – mKorbel

답변

1

JPanel 갑자기 부품을 교체하거나 패널에 다른 구성 요소를 추가하지 않습니다 크기 조정.

가장 좋은 추측은 질문의 제한된 정보로 인해 추측됩니다. 버튼 중 아무 것도 실제로 작동하지 않고 잘못된 정보 만 표시한다는 것입니다.

게시 한 코드에는 레이아웃의 재확인없이 add 만 포함되어 있습니다. Container#add 메소드의 javadoc을 참조하십시오. 크기를 조정하면 레이아웃이 다시 유효화되고 실제로 JPanel에 무엇이 들어 있는지 볼 수 있습니다.

가능한 해결책 :뿐만 아니라 당신의 ActionListener

  • 사용하십시오 CardLayout에 패널

    • 전화 invalidaterepaint, 나는 개인적으로 CardLayout 옵션을 선호하는 다른 구성 요소

    전환 할 수 상황에 조금 의존 할 수도 있습니다.

    게시 한 코드에서 두 버튼에 모두 table1을 추가합니다. 복사 - 붙여 넣기 문제이거나 실제 코드의 문제 일 수 있습니다.

  • 0

    명확하게 문제를 표현할 수 없습니다. 불편을 드려 죄송합니다.

    JPanel.removeAll() 메서드가 내 문제를 해결했습니다.

    JPanel에 새 구성 요소를 추가하기 전에이 메서드를 추가했습니다. JPanel의 예기치 않은 동작이 수정되었습니다.

    관련 문제