2012-07-16 4 views
3

간단한 스윙 응용 프로그램을 작성하고 있습니다. 아래 나열된 확인란을 추가하려고했습니다. actionHandler를 추가 한 후 loadPickersFoo이 (가) chckbxNewCheckBox 오른쪽에있는 곳에서 사라졌습니다. setHideActionText()에 전화를 추가하려고 시도했지만 아무 것도 표시되지 않습니다.텍스트 누락 체크 박스 구성 요소 추가 작업 후 스윙

JCheckBox chckbxNewCheckBox = new JCheckBox("Foo"); 
chckbxNewCheckBox.setToolTipText(""); 
chckbxNewCheckBox.setName(""); 
chckbxNewCheckBox.setHideActionText(true); 
chckbxNewCheckBox.setAction(loadPickers); 
mainPanel.add(chckbxNewCheckBox, "flowy,cell 0 1"); 

이렇게 변경하면 제대로 작동합니다. 텍스트 "Foo"를 봅니다.

JCheckBox chckbxNewCheckBox = new JCheckBox("Foo"); 
chckbxNewCheckBox.setToolTipText(""); 
chckbxNewCheckBox.setName(""); 
chckbxNewCheckBox.setHideActionText(true); 
chckbxNewCheckBox.setAction(loadPickers); 
chckbxNewCheckBox.setText("Foo"); //THIS DOES NOT WORK IF IT COMES BEFORE SET ACTION 
mainPanel.add(chckbxNewCheckBox, "flowy,cell 0 1"); 

여기에 작업을 완료했습니다. 왜 이런 방식으로 작동합니까? 내가 여기서 뭔가를 놓치고 있니? 현재 Mig Layout 시스템과 함께 Eclipse 용 WindowBuilder 플러그인을 사용하고 있습니다. 불행히도 WindowBuilder가 생성자를 사용하는 대신 .setText() 메서드를 사용하도록 만드는 방법이 있는지를 파악하지 못했습니다. 내가 잘못하고있는 것에 대한 도움,이 동작이 왜 이와 같이 존재하는지에 대한 통찰력, 또는 WindowBuilder에 대한 좋은 해결 방법은 훌륭 할 것입니다.

private class LoadPickers extends AbstractAction { 
    public LoadPickers() { 
     //putValue(NAME, "SwingAction_2"); 
     putValue(SHORT_DESCRIPTION, "Some short description"); 
    } 
    public void actionPerformed(ActionEvent e) { 
    } 
} 

답변

5

바와 같이 AbstractButton.setAction의 JavaDoc의 설명 :

즉시 Swing Components Supporting Action에 기재된 모든 특성을 변화시키는 동작 결과를 설정. 그 결과, 버튼의 속성은 액션의 속성이 변경 될 때 자동으로 업데이트됩니다.

는 그래서 다음의 모든 특성은 작업 설정에 의해 영향을받을 수 있습니다

  • toolTipText로
  • 는 actionCommand
  • 을 활성화 니모닉
  • 텍스트를
  • displayedMnemonicIndex
  • 아이콘 (JCheckBox에 대한 NA) (JCheckBox에 대한 NA)
  • 가속기
  • 는 답변
+0

감사를 선택! 나는 그것이 실제로 적용되는 버튼의 텍스트 값을 덮어 쓰거나 null을 처리하는 텍스트를 가지고 있다는 점을 정말로 이해하지 못한다고 생각합니다. 나는 하나의 액션 핸들러를 가지고 있는데,이 액션 핸들러는 아무런 체크 박스가 클릭되지 않았기 때문에, 모든 체크 박스를 그 싱글 액션 핸들러에 등록하려고한다. 이 경우 각 버튼에 대해 세 개의 별도 액션 핸들러를 만들지 않는 한 여러 가지 추가 작업을해야합니다. 액션 핸들러의 값이이 액션 핸들러의 재사용을 꺼리는 것이 본질적으로 보인다. – Jazzepi