Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Potřebuju otevřít v java gui pdf soubor, jde mi to tímto zpusobem
Runtime r = Runtime.getRuntime();
try {
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler C:\\plocha\\nazev\\soubor.pdf");
} catch (IOException ex) {
Logger.getLogger(sorting.class.getName()).log(Level.SEVERE, null, ex);
}
ale je to napevno, potřebuju aby to otevíralo z konkrétné složky(aby to otevíralo i na jiném PC)
nevíte jak to udělat?
Offline
Můžeš tam předat proměnnou typu řetězec kterou složíš ze dvou částí - s tím, že to "fileName" si můžeš načíst třeba z uživatelského vstupu, vstupního souboru apod.
// načtení názvu souboru
String fileName = ...
// spojení řetězců
String parametr = "rundll32 url.dll,FileProtocolHandler";
parametr += fileName;
// spuštění
Runtime.getRuntime().exec(parametr);
Offline
↑ cStP:
Zkusim jsem to takto, ale nefunguhe to, jesttli to je teda dobe zapsany, spustim to v gui java po kliknuti na button, takze uzivatel si sam nikam napsat nemuze co chce za soubor..(jestli by si teda napsal, jak ten soubor presne nacist z uzivatel. vstupu)
String fileName = "cviko.pdf";
// spojení řetězců
String parametr = "rundll32 url.dll,FileProtocolHandler";
parametr += fileName;
try {
// spuštění
Runtime.getRuntime().exec(parametr);
Offline
↑ symetrala: myslím mezeru mezi FileProtocolHandler a cviko.pdf, přesně, jak sem to napsal. Teď tam máš FileProtocolHandlercviko.pdf.
A na ploše ti to rozhodně nenajde, pokud tomu nezadáč cestu ve tvaru C:// nebo /home/ nebo prostě nějakou absolutní cestu. Buď musíš dát ty pdf přímo do složky, odkud ten soubor spouštíš a nebo tam musíš dát absolutní cestu.
Offline
↑ Jaa(c):
no práve to mam ve slozce ze ktere to spoustim, ale jak to teda zadám aby to naslo primo v ty slozce, jde mi to jen u me v pc...:/ Potreboval bych presne kod, slozka se jmenuje home a v ní mam ty pdfka, musi to najit proste primo tu slozku...
Offline
symetrala napsal(a):
jde mi to jen u me v pc...:/
No tak asi jinde nemáš ty pdfka na stejnym místě... Jak ten program spouštíš? Přes nějakej JAR? Pokud jo, tak dej pdfka na to samý místo jako je ten jar a pak stačí napsat jenom jejich název.
Nebo musíš použít absolutní cestu (už sem ti to psal), tedy musíš tam napsat celou cestu k tý složce home - C://neco/....../home/soubor.pdf ...
Offline
[re]p285241|
Uz dobry , to uz funguje, jeste se chci zeptat jestli nahodou nevíš, jak v java gui, kdyz kliknu na tlacitko aby mi vyjel option a mohl jsem si vybrat jakykoliv txt soubor, víš ne?Jak je to normálně , když dáš třeba procházet ve Windowsech...
Offline
na to už je potřeba nějaká grafický balík - např. swing... příkladů jak na to je hodně na Googlu. Stačí zadat fráze jako "java file chooser", "java swing filechooser" apod.
Mezi prvními například:
http://docs.oracle.com/javase/tutorial/ … ooser.html
http://www.exampledepot.com/egs/javax.s … tedlg.html
http://www.leepoint.net/notes-java/GUI/ … ooser.html
a další...
Offline
↑ cStP:
no tak třeba v tom prvnim odkazuje tento kod:
public void actionPerformed(ActionEvent e) {
//Handle open button action.
if (e.getSource() == openButton) {
int returnVal = fc.showOpenDialog(FileChooserDemo.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
//This is where a real application would open the file.
log.append("Opening: " + file.getName() + "." + newline);
} else {
log.append("Open command cancelled by user." + newline);
}
} ...
}
mohl by si to uzpusobit presne ma moje parametry? Protoze z toho to nechapu
Offline
Ne. Jak máme vědět, jaký jsou tvoje parametry? Buď se budeš muset naučit aspoň nějaký základy nebo si to nech od někoho udělat... Navíc všechno tohle se dá úplně jednoduše vygooglit.
V týhle ukázce je důležití jenom jedna řádka a to
File file = fc.getSelectedFile();
kde file je to tvoje pdfko. Jediný co teď potřebuješ je udělat někde tlačitko a nastavit mu event po kliknutí, cpož je třída s touhle metodou. Googli něco jako "java button click event"...
Offline
[re]p285536|Jaa(c)[/r
ale ja uz metodu na tlacitko vytvorenou mam, jen potrebuju vedet jestli to musim udelat novou tridu pro okno a do toho napsat co? a nebo uz do ty metody to psát....prsote potrebuju aby se po kliknuti otevrel ten chooser, nebo jaky specialni parametry potrebujes vedet...
Offline
Stačí ti tenhle kousek kódu (+ pozměnit názvy proměnných; např. se zde porovnává jestli, zmáčknuté tlačítko bylo jménem "openButton" což sis ty nejspíš pojmenovala jinak) + import vhodných balíků, proto "aby to jelo"... Teďka přesně nevím, jak to myslíš, ale pro tento kousek kódu, který odchytává kliknutí tlačítka novou třídu vytvářet nemusíš. Vlož to do již existující třídy jako další metodu...
Celý zdrojový kód funkčního programu je tam taky k nahlédnutí - zde http://docs.oracle.com/javase/tutorial/ … rDemo.java <-- tady se můžeš podívat jak mají řešené třídy, metody jejich volání, ...
Nejlepší bude, zkopírovat si to k sobě, zkusit si to spustit a podívat se co a jak se kdy volá... Přidej si tam pár výpisů do terminálu, změň si tam pár věcí a uvidíš jak se bude měnit chování...
Offline
↑ cStP:
jaký kousek? Myslíš tento?
public void actionPerformed(ActionEvent e) {
//Handle open button action.
if (e.getSource() == openButton) {
int returnVal = fc.showOpenDialog(FileChooserDemo.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
//This is where a real application would open the file.
log.append("Opening: " + file.getName() + "." + newline);
} else {
log.append("Open command cancelled by user." + newline);
}
} ...
}
, to je jako celý kód? Nemohl bys prosím sem hodit přesný kód, ktrý zkopiruju do events primo pod tlacitko,proste jen aby to otevrelo ten chooser, nijak zatim nic pojmenovany nemam..
Offline