Как открыть изображение в средстве просмотра изображений по умолчанию, используя Java в Windows? - PullRequest
7 голосов
/ 29 апреля 2011

У меня есть кнопка для просмотра изображения, прикрепленного к записи журнала, и когда пользователь нажимает эту кнопку, я хочу, чтобы он открывал изображение в программе просмотра изображений по умолчанию на компьютере с Windows?

Как мнезнаете, какой просмотрщик в программе просмотра изображений по умолчанию?

Сейчас я делаю что-то вроде этого, но это не работает:

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

И под не работает, я имею в видуничего не делатьЯ попытался запустить команду только в командной строке, и ничего не произошло.Нет ошибок, ничего.

Ответы [ 3 ]

15 голосов
/ 29 апреля 2011

Попробуйте с CMD / C START

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.");
 }
}

Запустится программа просмотра фотографий по умолчанию, связанная с расширением файла.

Лучше использовать 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.");
 }
}

См. Запустить приложение, связанное с расширением файла

9 голосов
/ 29 апреля 2011

Вы можете использовать класс Рабочий стол , который делает именно то, что вам нужно, чтобы открыть системное приложение.

File file = new File( fileName );
Desktop.getDesktop().open( file );
1 голос
/ 29 апреля 2011

Другое решение, которое хорошо работает в Windows XP / Vista / 7 и может открыть файл любого типа (url, doc, xml, image и т. Д.)

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...