Сделал программку отлично печатает в Windows
В линуксе даже не появляется printDialog и pageDialog
и даже не печатает и выбрасывает exception при вызове printDialog и pageDialog
принтер настроен правильно из OpenOffice и других программ типа FireFox печатает прекрасно
Java Printing - буровит в Линуксе
Модератор: Модераторы разделов
-
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
Java Printing - буровит в Линуксе
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 119
- ОС: MandrivaLinux/Solaris 10
Re: Java Printing - буровит в Линуксе
Не знаю как вы без исключений, но у меня случается NPE:
cy6ergn0m@d-espb04-126-197 ~/Загрузка $ java -jar WP3.jar
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: null attribute
at sun.print.IPPPrintService.isAttributeValueSupported(IPPPrintService.java:1147)
at sun.print.ServiceDialog$OrientationPanel.updateInfo(ServiceDialog.java:2121)
at sun.print.ServiceDialog$PageSetupPanel.updateInfo(ServiceDialog.java:1263)
at sun.print.ServiceDialog.initPageDialog(ServiceDialog.java:266)
at sun.print.ServiceDialog.<init>(ServiceDialog.java:243)
at sun.print.RasterPrinterJob.pageDialog(RasterPrinterJob.java:657)
at sun.print.RasterPrinterJob.pageDialog(RasterPrinterJob.java:614)
at wp.main.wpwindow$TablePrint.actionPerformed(wpwindow.java:179)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.jav
a:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273
)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173
)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
cy6ergn0m@d-espb04-126-197 ~/Загрузка $ java -jar WP3.jar
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: null attribute
at sun.print.IPPPrintService.isAttributeValueSupported(IPPPrintService.java:1147)
at sun.print.ServiceDialog$OrientationPanel.updateInfo(ServiceDialog.java:2121)
at sun.print.ServiceDialog$PageSetupPanel.updateInfo(ServiceDialog.java:1263)
at sun.print.ServiceDialog.initPageDialog(ServiceDialog.java:266)
at sun.print.ServiceDialog.<init>(ServiceDialog.java:243)
at sun.print.RasterPrinterJob.pageDialog(RasterPrinterJob.java:657)
at sun.print.RasterPrinterJob.pageDialog(RasterPrinterJob.java:614)
at wp.main.wpwindow$TablePrint.actionPerformed(wpwindow.java:179)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.jav
a:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273
)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173
)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
I want to Believe!
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
-
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
Re: Java Printing - буровит в Линуксе
Вот что пишут люди что в Java 1.5 печаталось ок а вот в 1.6 уже нет http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6506286
Да действительно exception выбрасывается просто я последнюю программу не проверил под линукс сдесь я добавил print dialog и page dialog
а в предыдушей просто давалось на печать без диалогов а exception не выбрасывалось потомучто печать была в блоке tray{}catch(Exception ex){}
вот еще жалобы http://nixcraft.com/linux-software/675-lin...s-printing.html
Здесь один пишет что установил JVM от IBM и проблема решилась - выходит глючная сама виртуальная машина?
Да действительно exception выбрасывается просто я последнюю программу не проверил под линукс сдесь я добавил print dialog и page dialog
а в предыдушей просто давалось на печать без диалогов а exception не выбрасывалось потомучто печать была в блоке tray{}catch(Exception ex){}
вот еще жалобы http://nixcraft.com/linux-software/675-lin...s-printing.html
Здесь один пишет что установил JVM от IBM и проблема решилась - выходит глючная сама виртуальная машина?
-
- Сообщения: 119
- ОС: MandrivaLinux/Solaris 10
Re: Java Printing - буровит в Линуксе
Покажите лучше код который печатает. + посмотрите как люди печатают (исходники NetBeans'a, Eclipse'a, etc).
Что значит не проверили под линукс? везде должно быть одинаково, хотя разница бывает конечно, но как правило причина в том, что кодеры сами завязываются на что-то непереносимое.
Кроме того, попробуйте установить jdk1.6.0_10
Что значит не проверили под линукс? везде должно быть одинаково, хотя разница бывает конечно, но как правило причина в том, что кодеры сами завязываются на что-то непереносимое.
Кроме того, попробуйте установить jdk1.6.0_10
I want to Believe!
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
-
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
Re: Java Printing - буровит в Линуксе
AMD писал(а): ↑24.05.2008 01:31Вот что пишут люди что в Java 1.5 печаталось ок а вот в 1.6 уже нет http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6506286
Да действительно exception выбрасывается просто я последнюю программу не проверил под линукс сдесь я добавил print dialog и page dialog
а в предыдушей просто давалось на печать без диалогов а exception не выбрасывалось потомучто печать была в блоке tray{}catch(Exception ex){}
вот еще жалобы http://nixcraft.com/linux-software/675-lin...s-printing.html
Здесь один пишет что установил JVM от IBM и проблема решилась - выходит глючная сама виртуальная машина?
Куда еще более переносимый код JTable.print в Windows созданая таблица печатается в линукс нет и не выбрасывает exception
файл FilePrinter.java
Код: Выделить всё
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JScrollPane;
import javax.swing.KeyStroke;
public class FilePrinter extends JFrame {
private PageFormat pageFormat;
private FilePageRenderer pageRenderer;
private String title;
public FilePrinter() {
super();
init();
PrinterJob pj = PrinterJob.getPrinterJob();
pageFormat = pj.defaultPage();
setVisible(true);
}
protected void init() {
setSize(350, 300);
center();
Container content = getContentPane();
content.setLayout(new BorderLayout());
// Add the menu bar.
JMenuBar mb = new JMenuBar();
JMenu file = new JMenu("File", true);
file.add(new FileOpenAction()).setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));
file.add(new FilePrintAction()).setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK));
file.add(new FilePageSetupAction()).setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK
| Event.SHIFT_MASK));
file.addSeparator();
file.add(new FileQuitAction()).setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK));
mb.add(file);
JMenu page = new JMenu("Page", true);
page.add(new PageNextPageAction()).setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0));
page.add(new PagePreviousPageAction()).setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0));
mb.add(page);
setJMenuBar(mb);
getContentPane().setLayout(new BorderLayout());
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
protected void center() {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
int x = (screenSize.width - frameSize.width) / 2;
int y = (screenSize.height - frameSize.height) / 2;
setLocation(x, y);
}
public void showTitle() {
int currentPage = pageRenderer.getCurrentPage() + 1;
int numPages = pageRenderer.getNumPages();
setTitle(title + " - page " + currentPage + " of " + numPages);
}
public class FileOpenAction extends AbstractAction {
public FileOpenAction() {
super("Open...");
}
public void actionPerformed(ActionEvent ae) {
// Pop up a file dialog.
JFileChooser fc = new JFileChooser(".");
int result = fc.showOpenDialog(FilePrinter.this);
if (result != 0) {
return;
}
java.io.File f = fc.getSelectedFile();
if (f == null) {
return;
}
// Load the specified file.
try {
pageRenderer = new FilePageRenderer(f, pageFormat);
title = "[" + f.getName() + "]";
showTitle();
JScrollPane jsp = new JScrollPane(pageRenderer);
getContentPane().removeAll();
getContentPane().add(jsp, BorderLayout.CENTER);
validate();
} catch (java.io.IOException ioe) {
System.out.println(ioe);
}
}
}
public static void main(String[] args) {
new FilePrinter();
}
public class FilePrintAction extends AbstractAction {
public FilePrintAction() {
super("Print");
}
public void actionPerformed(ActionEvent ae) {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(pageRenderer, pageFormat);
if (pj.printDialog()) {
try {
pj.print();
} catch (PrinterException e) {
System.out.println(e);
}
}
}
}
public class FilePageSetupAction extends AbstractAction {
public FilePageSetupAction() {
super("Page setup...");
}
public void actionPerformed(ActionEvent ae) {
PrinterJob pj = PrinterJob.getPrinterJob();
pageFormat = pj.pageDialog(pageFormat);
if (pageRenderer != null) {
pageRenderer.pageInit(pageFormat);
showTitle();
}
}
}
public class FileQuitAction extends AbstractAction {
public FileQuitAction() {
super("Quit");
}
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
}
public class PageNextPageAction extends AbstractAction {
public PageNextPageAction() {
super("Next page");
}
public void actionPerformed(ActionEvent ae) {
if (pageRenderer != null)
pageRenderer.nextPage();
showTitle();
}
}
public class PagePreviousPageAction extends AbstractAction {
public PagePreviousPageAction() {
super("Previous page");
}
public void actionPerformed(ActionEvent ae) {
if (pageRenderer != null)
pageRenderer.previousPage();
showTitle();
}
}
class FilePageRenderer extends JComponent implements Printable {
private int currentPageIndex;
private Vector lineVector;
private Vector pageVector;
private Font font;
private int fontSize;
private Dimension preferredSize;
public FilePageRenderer(File file, PageFormat pageFormat)
throws IOException {
fontSize = 12;
font = new Font("Serif", Font.PLAIN, fontSize);
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
lineVector = new Vector();
while ((line = in.readLine()) != null)
lineVector.addElement(line);
in.close();
pageInit(pageFormat);
}
public void pageInit(PageFormat pageFormat) {
currentPageIndex = 0;
pageVector = new Vector();
float y = fontSize;
Vector page = new Vector();
for (int i = 0; i < lineVector.size(); i++) {
String line = (String) lineVector.elementAt(i);
page.addElement(line);
y += fontSize;
if (y + fontSize * 2 > pageFormat.getImageableHeight()) {
y = 0;
pageVector.addElement(page);
page = new Vector();
}
}
if (page.size() > 0)
pageVector.addElement(page);
preferredSize = new Dimension((int) pageFormat.getImageableWidth(),
(int) pageFormat.getImageableHeight());
repaint();
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
java.awt.geom.Rectangle2D r = new java.awt.geom.Rectangle2D.Float(0, 0,
preferredSize.width, preferredSize.height);
g2.setPaint(Color.white);
g2.fill(r);
Vector page = (Vector) pageVector.elementAt(currentPageIndex);
g2.setFont(font);
g2.setPaint(Color.black);
float x = 0;
float y = fontSize;
for (int i = 0; i < page.size(); i++) {
String line = (String) page.elementAt(i);
if (line.length() > 0)
g2.drawString(line, (int) x, (int) y);
y += fontSize;
}
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex >= pageVector.size())
return NO_SUCH_PAGE;
int savedPage = currentPageIndex;
currentPageIndex = pageIndex;
Graphics2D g2 = (Graphics2D) g;
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
paint(g2);
currentPageIndex = savedPage;
return PAGE_EXISTS;
}
public Dimension getPreferredSize() {
return preferredSize;
}
public int getCurrentPage() {
return currentPageIndex;
}
public int getNumPages() {
return pageVector.size();
}
public void nextPage() {
if (currentPageIndex < pageVector.size() - 1)
currentPageIndex++;
repaint();
}
public void previousPage() {
if (currentPageIndex > 0)
currentPageIndex--;
repaint();
}
}
}
-
- Сообщения: 478
- Статус: Maestro
- ОС: Linux Kubuntu 7.10
Re: Java Printing - буровит в Линуксе
cy6erGn0m писал(а): ↑24.05.2008 20:40Покажите лучше код который печатает. + посмотрите как люди печатают (исходники NetBeans'a, Eclipse'a, etc).
Что значит не проверили под линукс? везде должно быть одинаково, хотя разница бывает конечно, но как правило причина в том, что кодеры сами завязываются на что-то непереносимое.
Кроме того, попробуйте установить jdk1.6.0_10
Короче разобрался SUN java - глючная
потсавил IBM java 1.6 работает все на ура прям как в Windows
притом распаковал tgz arhiv даже не зарегистрировал ее в системе
Даже сановский пример не работает на SUN JVM http://java.sun.com/docs/books/tutorial/ui.../printtext.html
Если не верьте проверьте
На IBM печатается