gpt4 book ai didi

java - 打印图形对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:27 30 4
gpt4 key购买 nike

我的打印图形对象的代码有问题。这个确切的代码大约一周前有效,现在当我在 netbeans 中打开文件时,它在执行时崩溃了。

这是代码:

package Project;

import java.awt.*;
import javax.swing.*;
import java.awt.print.*;

public class Print implements Printable {
private Component componentToBePrinted;

public static void printComponent(Component c) {
new Print(c).print();
}

public Print(Component componentToBePrinted) {
this.componentToBePrinted = componentToBePrinted;
}

public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
if (printJob.printDialog())
try {
printJob.print();
} catch(PrinterException pe) {
System.out.println("Error printing: " + pe);
}
}

@Override
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
disableDoubleBuffering(componentToBePrinted);
componentToBePrinted.paint(g2d);
enableDoubleBuffering(componentToBePrinted);
return(PAGE_EXISTS);
}
}

public static void disableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(false);
}

public static void enableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(true);
}
}

Netbeans 告诉我我没有覆盖抽象方法 print(Graphics,PageFormat,int) 而 @Override 告诉我它什么都不做。

还有一行:

Graphics2D g2d = (Graphics2D)g;

错误提示无法转换图形类型。我不知道我做错了什么,因为这个确切的代码在一周前就起作用了。

最佳答案

这听起来像是 Java 版本问题。 @Override 是在 Java 5 中添加的,但仅对覆盖类的方法有效。 Java 6 添加了对 @Override 的支持以在接口(interface)上实现方法(Printable 是)。

此外,我认为传递的所有 Swing Graphics 实例现在实际上都是 Graphics2D 实例,因此从 Java 1.2 开始,转换应该是安全的。因此,如果您遇到转换错误,那么也许您使用的是非常旧的 Java 版本?

无论哪种方式,我都建议您检查您的 Netbeans 配置以确保您至少使用 Java 6。

关于java - 打印图形对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16402372/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com