Autor Wątek: Otwieranie programów z aplikacji javy  (Przeczytany 3108 razy)

Offline BartMax

  • Użytkownik
    • Mobile Wings

# Luty 24, 2008, 17:34:11
Czy jest mozliwosc otwierania w aplikacji javowej roznych plikow - np pdfow tak zeby zostaly otworzone poprzez acrobat reader?? To samo dotyczy sie stron www. Czy mozna z poziomu aplikacji kliknac na jakis button i przy pomocy domyslnej przegladarki wyswietlic strone??
Bede wdzieczny za pomoc i jakiekolwiek wskazowki. Ja wracam do googlowania, moze cos znajde.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xion

  • Moderator
    • xion.log

# Luty 24, 2008, 17:47:33
Runtime.getRuntime().exec(). Może wyrzucić SecurityException, jeżeli będzie się tego próbowało w aplecie.

Cytuj
Ja wracam do googlowania, moze cos znajde
A ja to znalazłem w mniej więcej 40 sekund. Pierwszy i ostatni raz.

Offline kamykadze

  • Użytkownik

# Luty 25, 2008, 14:32:02
Polecam tzw. Desktop API, wprowadzone chyba w Java 1.6 i z tego co wiem, aktualnie zalecane. Sam nie mam z nim większego doświadczenia, więc polecam Ci samodzielne poszukiwania, poniższe linki mogą być szczególnie pomocne.

http://java.sun.com/javase/6/docs/api/java/awt/Desktop.html
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/
« Ostatnia zmiana: Luty 25, 2008, 14:35:19 wysłana przez kamykadze »

Offline dzemeuksis

  • Użytkownik
    • Blog quodmeturbat

# Luty 25, 2008, 14:39:32
try
{               
         ProcessBuilder pb = new ProcessBuilder(string-z-siezka-dostepu-do-pliku-ktory-chcesz-otworzyc);               
         Process p = pb.start();                             
}
catch(Exception e) {}
Możliwe, że argumentem konstruktora ProcessBuilder musi być tablica String (nie pamiętam dokładnie), ale jeśli nawet, to na 100% może to być tablica jednoelementowa.

Offline BartMax

  • Użytkownik
    • Mobile Wings

# Luty 25, 2008, 14:40:07
Tez o tym czytalem, ale jestem zmuszony do robienia aplikacji w 1.4

import java.util.*;
import java.io.*;
// class StreamGobbler omitted for brevity
public class TestExec
{
    public static void main(String args[])
    {
       
       
        try
        {
            String cmd = "explorer index.html";
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec(cmd);
           
            // any error message?
            StreamGobbler errorGobbler = new
                StreamGobbler(proc.getErrorStream(), "ERR");           
           
            // any output?
            StreamGobbler outputGobbler = new
                StreamGobbler(proc.getInputStream(), "OUT");
               
            // kick them off
            errorGobbler.start();
            outputGobbler.start();
                                   
            // any error???
            int exitVal = proc.waitFor();
            System.out.println("ExitValue: " + exitVal);
        } catch (Throwable t)
          {
            t.printStackTrace();
          }
    }
}


class StreamGobbler extends Thread
{
    InputStream is;
    String type;
    OutputStream os;
   
    StreamGobbler(InputStream is, String type)
    {
        this(is, type, null);
    }
    StreamGobbler(InputStream is, String type, OutputStream redirect)
    {
        this.is = is;
        this.type = type;
        this.os = redirect;
    }
}

Odkrylem, ze np. cos takiego tez poprawnie dziala String cmd = "explorer plik.pdf";

Dzieki za pomoc chlopaki
« Ostatnia zmiana: Luty 25, 2008, 16:20:04 wysłana przez BartMax »

Offline kamykadze

  • Użytkownik

# Luty 25, 2008, 17:14:38
Niestety, Twój kod na bank nie będzie przenośny. Szkoda, że masz ograniczenia związane z wersją Javy, Desktop pewnie byłby dużo lepszym rozwiązaniem.