Forum » Programiranje » Printanje na papir java problem
Printanje na papir java problem
javaMaster ::
Živjo,
Že 3 dni se ukvarjam z printanjem besedila iz datoteke na papir. Imam 3 datoteke glava, centralni del in noga. Glava in noga se ne spreminjata (usebina je vedno ista) edino centralni del se spreminja (se zapisuje v datoteko). Zdaj pa želim vse 3 datoteke združit ter to natisnit. To bi bil kot račun v trgovini. Eno enostavno rešit sem že uporabil ampak nisem dobil željenega rezultata. Problem nastane pri združitvi teh datotek (se povozijo med sabo in ostane samo zadnja)
Tukaj je koda, ki mi še vedno dela težave (težave mi delajo argumenti pri metodi print):
Imate kašno idejo, boljšo rešitev?
Hvala za pomoč!
Že 3 dni se ukvarjam z printanjem besedila iz datoteke na papir. Imam 3 datoteke glava, centralni del in noga. Glava in noga se ne spreminjata (usebina je vedno ista) edino centralni del se spreminja (se zapisuje v datoteko). Zdaj pa želim vse 3 datoteke združit ter to natisnit. To bi bil kot račun v trgovini. Eno enostavno rešit sem že uporabil ampak nisem dobil željenega rezultata. Problem nastane pri združitvi teh datotek (se povozijo med sabo in ostane samo zadnja)
Tukaj je koda, ki mi še vedno dela težave (težave mi delajo argumenti pri metodi print):
try{ InputStream io = new FileInputStream (new File("src/paket/racun.txt")); InputStream io2 = new FileInputStream (new File("src/paket/racunGlava.txt")); InputStream io3 = new FileInputStream (new File("src/paket/racunNoga.txt")); JTextPane jtp = new JTextPane(); jtp.setBackground(Color.white); int x; int y; int z; String rac=null; String glava=null; String noga=null; while (( y = io2.read()) != -1 ){ glava= glava+ (char)y; jtp.setText(glava); } while (( x = io.read()) != -1 ){ rac= rac+ (char)x ; jtp.setText(rac); } while (( z = io3.read()) != -1 ){ noga= noga+ (char)z ; jtp.setText(noga); } jtp.print(); io.close(); io2.close(); io3.close(); } catch (PrinterException ex) { Logger.getLogger(blagajna.class.getName()).log(Level.SEVERE, null, ex); }catch (IOException e){ System.out.println(e.toString()); } }
Imate kašno idejo, boljšo rešitev?
Hvala za pomoč!
Jeremias ::
Zakaj imaš samo zadnjo datoteko je zato, ker daješ jtp.setText. In to vedno zamenja text, ne dodaja texta. Poglej če mogoče podpira addText ali pa si vse te datoteke združi v en stringBuilder in potem ta string iz StringBuildera nastavi JTextPane-ju (v tvojem primeru jtp spremenljivki).
Lp
Jernej
Jernej
javaMaster ::
Opala, zdaj deluje. Hvala Jeremias za pomoč! Ta StringBuilder prvič slišim, je pa zelo podoben StringBuffer-ju (podobne metode). Imam pa eno majceno težavo in sicer ko natisnem na papir se slog oz. oblikovanje spremeni (pač kakšna beseda gre malce po svoje - ni urejeno kot v datoteki) Mogoče veš kako se da to rešit? Vrjetno je problem v tem, da je to tekstovna datoteka (s txt datotekami se ne da sloga in oblikovanje urejat, pri docx pa ja, ampak potem se zakomplicira pri kodi).
Tukaj kos popravljene kode:
Tukaj kos popravljene kode:
while (( y = io2.read()) != -1 ){ sb.append ((char)y); } while (( x = io.read()) != -1 ){ sb.append ((char)x); } while (( z = io3.read()) != -1 ){ sb.append ((char)z); } jtp.setText(sb.toString()); jtp.print(); io.close(); io2.close(); io3.close(); }
Zgodovina sprememb…
- spremenil: javaMaster ()
javaMaster ::
Jeremias ::
Lahko uporabiš StringBuffer, vender je v tvojem primeru redundanten in počasnejši. StringBuffer pride v poštev če delaš z nitmi in ti potem ni treba skrbet za sinhronizacijo.
Lp
Jernej
Jernej
Spura ::
sinhronizacija preprecuje napacno delovanje v vecnitnem okolju. Do neke mere...
Stringbuilder je hitrejsi ker je brez sinhronizacije. Je pa na voljo samo od jave 6 naprej.
Stringbuilder je hitrejsi ker je brez sinhronizacije. Je pa na voljo samo od jave 6 naprej.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [JAVA] HTTPS clientOddelek: Programiranje | 3167 (1897) | peterv6i |
» | Java skeniranje map in podmapOddelek: Programiranje | 1143 (1032) | nightrage |
» | [PHP]Zajem slike iz direktorijaOddelek: Programiranje | 1225 (1142) | KernelPanic |
» | [NALOGA][Java] Branje vsebine datoteke vzvratnoOddelek: Programiranje | 1599 (1541) | SkIDiver |
» | Kako pošiljanje datotek v JAVI.Oddelek: Programiranje | 1829 (1700) | kopernik |