2017-12-22 6 views
0

작은 애완 동물 프로젝트에서 작업 중이며 ComboBox에서 이상한 문제가 발생했습니다. 프로그램의이 부분의 의도 된 기능은 해당 목적을 위해 배열로 변환 된 comboBox를 채우는 ArrayList에 항목을 추가하고 파일에 쓰고 파일을 다시 읽은 다음 해당 항목을 업데이트하도록하는 것입니다. 콤보 상자에있는 목록. 이해가 안되는 이유 때문에 동적으로 변경되지 않고 다시 칠해도 작동하지 않습니다. 그러나 프로그램을 닫고 다시 열면 생성자가 업데이트 된 파일을 deserialize 할 때 변경 내용을 반영합니다. 코드는 다음과 같습니다.ComboBox는 재시작시에만 업데이트됩니다. Java

편집 : 동일한 방식으로 revalidate 메소드를 시도했습니다. 프로그램이 열려있는 동안 항목을 추가하면 목록에 표시되지 않고 프로그램의 나머지 부분은 내가 추가 한 항목이없는 것처럼 동작하고 심지어 포인터에 대한 참조가 시도 된 경우에도 throw됩니다. 프로그램을 닫은 후 다시 열면 이전 실행에서 추가 된 항목이 목록에 나타나지만 제거 방법이 작동하지 않고 항목이 삭제되지 않습니다 프로그램 실행이 활성화됩니다.

편집 2 : 내 comboBox 코드와 두 곳 모두에서 호출 된 곳에서 revalidate/repaint 메서드를 포함합니다. 나뿐만 아니라 모두 같은 행동이 같은

+0

코드처럼 ArrayList의에 기본 모델을 업데이트해야 당신이 공유 한 것은 분명 유용하지만, 콤보 박스가있는 곳을 더 추가 할 수 있습니까? 어디에서 다시 칠해? 나중에이 태그를 잊어 버리지 않도록 나를 태그하십시오. –

답변

0

자신을 그것을 파악 남아 개별적으로 각 시도했습니다, 정말

comboBox.setModel(new DefaultComboBoxModel<Item>(itemList.toArray(new Item[itemList.size()]))); 
        comboBox.getParent().validate(); 
관련 문제