我正在设计的swing GUI中的一个JPanel使用AWT图形绘制只能在运行时绘制的图形。 Eclipse WindowBuilder不再想要绘制我的任何swing GUI,因为现在awt绘制代码中存在空指针异常。请注意,这不是关于空指针异常的一般性问题。这是WindowBuilder特有的,以及如何处理在WindowBuilder上下文中没有意义的代码。如果WindowBuilder试图解释我的摇摆gui,是否有一种方法可以忽略awt绘制代码?
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class previewPanel extends JPanel {
private static final long serialVersionUID = 3787425749772291816L;
public final static int WIDTH = 918;
public final static int HEIGHT = 125;
public void paint(Graphics g) {
BufferedImage img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_3BYTE_BGR);
Graphics gBuffer = img.getGraphics();
gBuffer.setColor(Color.WHITE);
gBuffer.fillRect(0, 0, WIDTH, HEIGHT);
businessClass.object.paint(gBuffer);
g.drawImage(img, 0, 0, this);
try {
Thread.sleep(20);
} catch (Exception e) {
}
repaint();
}
在这个特定的例子中,previewPanel嵌入在我在WindowBuilder中使用的整体swing gui中,而businessClass.object只在运行时初始化(Main调用businessClass的初始化,而不是gui本身)。我只展示了一个例子,但是还有很多其他情况我会调用运行时对象的绘图代码或需要用awt图形绘制的对象列表。
答案 0 :(得分:-2)
我找到了一种解决方法,将运行时唯一代码包装在针对businessClass单例的空指针检查中。 WindowBuilder不会通过此检查,因此会跳过代码。这是一个肮脏的解决方案。我希望编译标志或诸如此类的东西。