【问题标题】:Eclipse WindowBuilder: Ignore runtime paint() code [duplicate]Eclipse WindowBuilder:忽略运行时paint()代码[重复]
【发布时间】:2018-01-30 02:23:21
【问题描述】:

我正在设计的 Swing GUI 中的一个 JPanel 使用 AWT 图形来绘制只能在运行时绘制的图形。 Eclipse WindowBuilder 不再想要绘制我的任何摆动 GUI,因为现在 awt 绘制代码中存在空指针异常。请注意,这不是关于空指针异常的一般问题。这是特定于 WindowBuilder 以及如何处理在 WindowBuilder 上下文中没有意义的代码。如果 WindowBuilder 试图解释我的 swing 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 图形绘制的对象列表。

【问题讨论】:

  • 调试 NullPointerException 的启发式方法几乎总是相同的:您应该认真阅读异常的堆栈跟踪以找到出错的代码行,引发异常的行,然后仔细检查该行,找出哪个变量为空,然后回溯到您的代码以查看原因。你会一次又一次地遇到这些,相信我。
  • 您在该代码中还有许多其他问题——永远不要在 Swing gui 中调用 sleep 更不用说它的绘画方法,也不要在绘画方法中调用 repaint。请改用Swing Timer
  • 感谢您的建议。我将返工以更符合摇摆要求。我强烈不同意这是一个通用空指针问题的副本。我确切地知道为什么会出现空指针异常:我在原始问题中对其进行了彻底的解释。这是一个关于多个执行环境的问题(实际运行程序与使用 WindowBuilder)。我在问如何对仅在另一个环境中才有意义的代码进行分区。

标签: java eclipse swing awt windowbuilder


【解决方案1】:

我找到了一种解决方法,方法是将仅运行时的代码包装在针对 businessClass 单例的空指针检查中。 WindowBuilder 不会通过这个检查,所以代码被跳过了。这是一个肮脏的解决方案。我希望有编译标志之类的。

【讨论】:

  • 这是非常错误的。你永远不会这样做,永远。而是按照重复问题的答案中的详细说明调试异常。
  • 使用SwingWorker处理延迟,对于example
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多