2011-04-28 5 views
6

로그 항목에 첨부 된 이미지를 볼 수있는 버튼이 있으며 사용자가 해당 버튼을 클릭하면 Windows 컴퓨터에서 사용자의 기본 이미지 뷰어로 이미지를 열려고합니까?Windows에서 Java를 사용하여 기본 이미지 뷰어에서 이미지를 여는 방법은 무엇입니까?

기본 이미지 뷰어에서 어떤 뷰어를 어떻게 알 수 있습니까?

는 지금은 이런 일을하고 있어요 그러나 그것은 작동하지 않습니다

String filename = "\""+(String)attachmentsComboBox.getSelectedItem()+"\""; 
Runtime.getRuntime().exec("rundll32.exe C:\\WINDOWS\\System32\\shimgvw.dll,ImageView_Fullscreen "+filename); 

을 그리고 내가 아무것도하지 않는 것을 의미 작동하지 않습니다에 의해. 명령 줄에서 명령을 실행하려고 시도했지만 아무 일도 없었습니다. 오류가 없으며 아무것도 없습니다.

답변

11

CMD를 함께 시도/

public class Test2 { 
    public static void main(String[] args) throws Exception { 
    String fileName = "c:\\temp\\test.bmp"; 
    String [] commands = { 
     "cmd.exe" , "/c", "start" , "\"DummyTitle\"", "\"" + fileName + "\"" 
    }; 
    Process p = Runtime.getRuntime().exec(commands); 
    p.waitFor(); 
    System.out.println("Done."); 
} 
} 

이 파일 확장명과 연결된 기본 사진 뷰어를 시작합니다 START C.

더 좋은 방법은 java.awt.Desktop을 사용하는 것입니다.

import java.awt.Desktop; 
import java.io.File; 

public class Test2 { 
    public static void main(String[] args) throws Exception { 
    File f = new File("c:\\temp\\test.bmp"); 
    Desktop dt = Desktop.getDesktop(); 
    dt.open(f); 
    System.out.println("Done."); 
} 
} 

Launch the application associated with a file extension

+0

의 모든 유형을 열 수있는 또 다른 방법 XP에서는 매력이 있지만 Vista 나 Win7에서는 아직 체크 아웃하지 않았습니다. 두 번째 시도해 볼 수도 있습니다. 왜 두 번째 것이 더 나은 방법일까요? –

+1

일반 Java SE 클래스 (1.6)를 사용하고 있기 때문에 파일 형식이 지원되면 다른 플랫폼에서도 작동합니다. – RealHowTo

+0

모든 OS에서 작동하면 충분합니다. –

7

당신은 시스템을 관련 응용 프로그램을 엽니 다, 당신이 필요로 정확히 수행하는 Desktop 클래스를 사용할 수 있습니다 참조하십시오.

File file = new File(fileName); 
Desktop.getDesktop().open(file); 
1

윈도우 XP/Vista/7에서 잘 작동하고 첫 번째는 같은 일 파일 (URL, 문서, XML, 이미지 등)

Process p; 
try { 
    String command = "rundll32 url.dll,FileProtocolHandler \""+ new File(filename).getAbsolutePath() +"\""; 

    p = Runtime.getRuntime().exec(command); 
    p.waitFor(); 

} catch (IOException e) { 
    // TODO Auto-generated catch block 

} catch (InterruptedException e) { 
    // TODO Auto-generated catch block 
} 
관련 문제