2012-02-28 4 views
2

스윙이있는 프로그램을 작성하고 여러 객체 E를 표시하기 위해 JList를 사용했습니다. 단추로 목록에서 개체를 제거 할 수 있기를 원했습니다. 의 ActionListener 내에서 내가 코딩 : 이클립스 또는 '-jar xyz.jar 자바'와 콘솔에서 실행 할 때Java - JList.getSelectedValuesList()가 jar 파일에서 작동하지 않습니다.

List<Data> datas = dataList.getSelectedValuesList(); 
for(Data data : datas) 
    deleteData(data); 
dataList.setListData(getDatas()); 

이 완벽했다. 그러나 .jar 파일을 두 번 클릭하면 제거 단추가 전혀 작동하지 않으며 목록에서 제거 된 항목이 없으며 오류조차 생성되지 않습니다.

따라서, 나는 List.getSelectedValues ​​테스트() 메소드 :

Object[] datas = dataList.getSelectedValues(); 
for(Object data : datas) 
    deleteData((Data)data); 
dataList.setListData(getDatas()); 

이 방법은 완벽했다. 다만,이 메소드는, JDK 1.7부터 getSelectedValuesList()를 사용하고 있습니다. 누군가 내게 문제를 설명 할 수 있습니까? Java 빌드 문제입니까? 어떻게 비 권장되지 않는 메소드를 계속 사용할 수 있습니까?

감사합니다.

+0

컴퓨터에 여러 개의 Java 버전이 설치되어 있습니까? – Danny

+0

예. 이것이 어떻게 문제가 될 수 있습니까? – Morrow

+3

제 생각에는 자바의 다른 버전으로 실행중인 jar를 더블 클릭하면 명령 행에서 실행할 때입니다. 항아리를 마우스 오른쪽 버튼으로 클릭하고 컴파일 된 것과 동일한 버전의 java로 실행하십시오. – Danny

답변

3

컴퓨터에 여러 버전의 Java가 설치되었을 가능성이 높습니다. 명령 행에서 실행하면 하나의 Java 버전과 다른 버전을 두 번 클릭하여 응용 프로그램을 실행합니다.

두 번 클릭하는 대신 오른쪽 버튼을 클릭하고 "연결 프로그램 ..."을 클릭하고 응용 프로그램이 컴파일 된 Java 버전을 선택해야합니다.

+0

고맙습니다. 동일한 문제가 있었지만 동일한 솔루션을 사용했습니다. 또 다른 빠른 해결 방법은이 메소드의 단일 항목 버전 인'getSelectedValue()'를 사용하는 것입니다 (해당되는 경우). 물론 이것은 여러 개의 선택된 항목을 제공하지 않지만 java 6과 7에서 작동합니다. – vikingsteve

관련 문제