|
|
|
Печать в JAVA
|
|||
|---|---|---|---|
|
#18+
Добрый день всем. Есть таблица JTable,в ней находятся данные из СУБД,рядом с таблицей находится кнопочка под названием печать,при нажатии на нее,я хочу,чтобы у меня распечаталось содержимое таблицы JTable.Делаю так(класс Pechat реализует интерфейс Printable): ..... PrinterJob job = PrinterJob.getPrinterJob(); PageFormat pageFormat=job.defaultPage(); pageFormat=job.pageDialog(pageFormat); job.setPrintable(new Pechat(),pageFormat); job.setPrintable(new Pechat()); if (job.printDialog()) { try { job.print(); } ...... Дальше в классе Pechat пишу ...... public int print (Graphics g, PageFormat f, int pageIndex) { switch (pageIndex) { case 0 :{ g.drawString(str_p.toString(),100,100); return PAGE_EXISTS; } case 1 : //..... return PAGE_EXISTS; default:{ return NO_SUCH_PAGE; } ........ переменная str_p(типа StringBuffer) содержит в себе значения из таблицы. Когда нажимаю печать оно печатает мне эту переменную,но не всю,а только один кусок остальное не влазит что ли.Как мне сделать так,чтобы при распечатке одного значения из str_p, осуществлялся переход на следующую строку и так далее. Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 10:50 |
|
||
|
Печать в JAVA
|
|||
|---|---|---|---|
|
#18+
Придется все программировать самому: и переходы на следующую строку и переходы на следующую страницу :( Смотри также Печать документов на принтере в Java ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 17:17 |
|
||
|
Печать в JAVA
|
|||
|---|---|---|---|
|
#18+
Спасибо,но я там уже был. А при помощи чего в Java отчеты делаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 18:05 |
|
||
|
Печать в JAVA
|
|||
|---|---|---|---|
|
#18+
peter6636Спасибо,но я там уже был. А при помощи чего в Java отчеты делаются? Попробуй CrystalReports - дорогой, но умеет всё и удобный визуальный интерфейс для построений. JasperReports - бесплатный, но трудней разобратся (с начала) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 03:28 |
|
||
|
Печать в JAVA
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за помощь.Хотел бы еще спросить такое: есть окошко1 в нем таблица1,в таблице находятся данные из СУБД,также на этом окошке есть кнопка,при нажатии на которую высвечивается окошко2 в котором есть таблица2,т.е. на экране уже 2 окна. В методе public Object getValueAt(int parm1, int parm2) { System.out.println("str");} я поставил System.out.println и заметил,что когда я вожу мышкой по таблице1,в командной строке печатается "str",т.е. для каждой ячейки таблицы вызывается метод getValueAt(даже после того как таблица заполнена).При переходе на окошко2 также вызывается метод getValueAt и печатается "str".Глюк в том,что в таблице1 5 строк,а в таблице2,2 строки,и при переходе от окна2 к окну1,3 строки таблицы1 просто затираются.Как сделать так,что-бы после того как таблица заполнилась этот метод не вызывался,вообщем как отрубить какой-то обработчик события. Простите за то что много написал.Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 10:13 |
|
||
|
Печать в JAVA
|
|||
|---|---|---|---|
|
#18+
Хм, я так понимаю что проблемы в Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 13:34 |
|
||
|
Печать в JAVA
|
|||
|---|---|---|---|
|
#18+
В классе Opisanie находится кнопка при нажатии на которую вызывается класс Tablica (p.s. Tablica extends AbstractTableModel) Вот код кнопки: void jButton3_actionPerformed(ActionEvent e) { jTable1.setModel(new Tablica(1,null,this,null)); } Для каждой таблицы у меня вызывается new Tablica() c разными параметрами А вот код класса Tablica: ........ public String[] columnName={"Номер","Неполадка","Комната","Статус","Мастер","Принята","Департамент","Выполнена"}; ...... public Tablica(int peredacha,Vipolneno obj,Opisanie obj2,Ne_vip obj_n){ try{ this.obj=obj; this.obj2=obj2; this.obj_n=obj_n; Class.forName(driver2); conect=DriverManager.getConnection("jdbc:odbc:Min_transport","sa",""); switch(par1){ case 1:{ kola2=stat2.executeQuery(); exec_fr(); break; } case 2:{ stat3.setString(1,master); stat3.setBoolean(2,true); kola=stat3.executeQuery(); exec_fr2(); } case 3:{ stat3.setString(1,master); stat3.setBoolean(2,false); kola3=stat3.executeQuery(); k_strok=kola3.getRow(); exec_fr3(); exec_fr3(); } break; } default: System.out.println("----"); } }catch(SQLException d){ } } public void exec_fr3(){ rows_m=null; rows_m3=null; rows_m2=null; try{ metadata =kola3.getMetaData(); colonki=metadata.getColumnCount(); rows_m2=new Vector(); while(kola3.next()){ Vector newRow = new Vector(); for (int i = 1; i <= metadata.getColumnCount(); i++){ Object st=kola3.getObject(i); newRow.addElement(st); } rows_m2.addElement(newRow); stroki=kola3.getRow(); } kola3.close(); stat3.close(); stat5.close(); conect.close(); }catch(SQLException e){ e.toString(); } } public int getColumnCount() { return columnName.length; } public Object getValueAt(int parm1, int parm2) { if(!(this.obj2==null)){ row=(Vector)rows_m3.elementAt(parm1); this.obj=null; this.obj_n=null; return row.elementAt(parm2); } if(!(this.obj==null)){ row_vip=(Vector)rows_m.elementAt(parm1); this.obj_n=null; this.obj2=null; return row_vip.elementAt(parm2); } if(!(rows_m2==null)){ row_ne_vip=(Vector)rows_m2.elementAt(parm1); this.obj=null; this.obj2=null; return row_ne_vip.elementAt(parm2); } return null; } public int getRowCount() { return rows_m2.size(); } public String getColumnName(int col){ return columnName[col]; } public boolean isCellEditable(int row,int column){ } public Class getColumnClass(int col){ return columnClasses[col]; } public void setValueAt(Object value, int row, int column){ row2.setElementAt(value,column); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 14:06 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=836&tid=2153648]: |
0ms |
get settings: |
4ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 280ms |

| 0 / 0 |
