To zdenda : S hashem jsem ješte nikdy pořádně nedělal, tak nevim přesně, jak to funguje, ale funguje to a to je hlavní... Díky moc za pomoc...
Příspěvky odeslané z IP adresy 88.103.188.–
Mám trochu problém s tiskem na pokladní tiskárně. Pro správné vytištění si musím při každém tisku ve vyskočivším PrintDialogu nastavit horní,levý i pravý okraj manuálně na "0", neboť jsou implicitně nastavené na 1 palec a nevím, jak toto nastavení změnit. Je zřejmé, že tento způsob je po chvíli značně otravný. Poměrně výhodně využívám pro formátování textu komponentu jTextArea, pro kterou pak jednoduše zavolám metodu print()... ve výsledku tedy:
jTextArea.print();
Nyní využívám metodu print s rozšířenými vstupními atributy:
jTextArea.print(MessageFormat headerMessage, MessageFormatfooterMessage,boolean showPrintDialog, PriterService service, PrintRequestAttributeSet attributes, boolean interactive);
volám jí ve formátu:
jTextArea.print(null, null, false, null, null, false);
tuším, že velikost okrajů pro tisk se dá nastavit v AtributeSet, ale nějak jsem zatím neobjevil, jak. Budu velmi vděčný za každou radu.
Potřebuji vytisknou obsah jTextArea přesně tak, jak jej tato komponenta zobrazuje. Poskládal jsem si kód z různých fragmentů co jsem našel a pochopil na internetu, ale nefunguje správně. Nevím, kde dělám chybu, tak pokud by mi někdo poradil. Dovolím si přidat příslušnou část kódu:
private void vytisknoutFakturu() {
Printable pt = new Printable() {
public int print(Graphics g, PageFormat pageFmt, int index) throws PrinterException {
if (index != 0)
return NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D) g;
g2.translate(pageFmt.getImageableX(), pageFmt.getImageableY());
JComponent c = jTextArea1;
RepaintManager mgr = RepaintManager.currentManager(c);
boolean db = mgr.isDoubleBufferingEnabled();
mgr.setDoubleBufferingEnabled(false);
c.print(g2);
mgr.setDoubleBufferingEnabled(db);
return PAGE_EXISTS;
}
};
doPrint(pt);
}
protected void doPrint(Printable pt) {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(pt);
try {
pj.print();
}
catch (PrinterException e) {
jOptionPane1.showMessageDialog(null,
"Při tisku došlo k chybě: " + e.getMessage(),
"Chyba", JOptionPane.ERROR_MESSAGE);
}
}
Budu vděčný za každou radu.
No nakonec jsem to vyřešil tak, že jsem si všechny objekty ukládal do ArrayListu a přistupoval k nim pomocí indexu. Je to to nejelegantnější, co mně napadlo.
Zajímalo by mně, jestli je nějaký způsob, jak získat název objektu z nějaké proměnné, např ze Stringu. Př:
int pocetObjektu = 1;
String nazevObjektu = "Objekt" + String.valueOf(pocetObjektu);
Objekt nazevObjektu = new Objekt();
pocetObjektu ++;
String nazevObjektu = "Objekt" + String.valueOf(pocetObjektu);
Objekt nazevObjektu = new Objekt();
tak aby mi z tohoto kódu vylezly dva objekty - Objekt1 a Objekt2
V porgramu budu mít předem neurčený počet objektů, budu tedy potřebovat názvy jejich referenčních proměnných nějakým způsobem měnit... Jestli zná někdo účinný způsob, nebo jestli je jednodušší ukládat objekty např. do ArrayListu a odkazovat se na ně pomocí indexu...