当前位置: 首页 > 面试题库 >

调用getGraphics()的任何替代方法都返回null

邹英悟
2023-03-14
问题内容

通常,当我调用getGraphics()时,即使我设置了xxx.getGraphics();它也返回null。xxx可见(如Google搜索所示…)

但这是行不通的,这使我感到沮丧,因为它在C-Sharp中很容易实现。

有谁知道这样做的更好方法,而不是使用getGraphics()?


问题答案:

您通常不希望在Java
Swing组件上使用getGraphics,因为如果尚未渲染该组件,则该字段将为null;即使已渲染该组件且返回的Graphics对象也不为null,它通常也将是寿命短的对象,如果重新粉刷该组件将无法正常工作(该过程超出您的控制范围)。

更好的选择是绘制JComponent的paintComponent方法,并使用传递到此方法中的Graphics对象作为其参数。如果您需要绘制一些要作为背景图像的东西,也可以在BufferedImage上进行绘制。执行此操作时,


getGraphics()在此处调用图像(或createGraphics()如果需要Graphics2D对象),则返回的对象将是稳定的。您仍然需要通过调用Graphics#drawImage(....)paintComponent的Graphics参数,以某种方式将图像显示为JLabel显示的ImageIcon或JComponent的paintComponent方法中显示的图像。



 类似资料:
  • 我的预览在方法中调用时返回null。测试类确实扩展了,因为它被保存在

  • 我对Mockito很陌生,有一门课 和 我正在使用Mockito为A类编写单元测试,并试图实现以下行为,其中B是一个模拟: 当任何模拟的C实例调用doSomething()时,如何返回“somethingElse”?我不想将此行为绑定到任何一个特定的mock(C.class)实例。

  • 问题内容: python内置方法是否可在某个地方的包中引用? 让我解释。在python的早期,我制作了一个类似于django的模型: 从那以后,我需要为其添加一个属性。这让我有了这个模型: 因此,现在在运行时出现错误:。发生这种情况的原因是,ForeignKey属性已替换了内置标识符属性。我想做的是代替使用(或类似方法)。 注意: 我已经知道将name属性移到property字段的声明上方的解决方

  • 问题内容: 我到处都看到应通过以下方式调用超类方法的示例: 这样做有什么不利之处吗? 问题答案: 请考虑以下情况: 因此,这些类形成了一个所谓的继承钻石: 运行代码会产生 不好,因为跳过了s 。其原因是因为的调用的直接。 的目的是解决继承钻石。如果您取消评论 和注释掉 该代码产生了更令人满意的结果: 现在,所有方法都被调用。请注意,在当时你定义你可能会 认为 这是与调用,但是你错了。在上述情况下,

  • 我编写了下面的Scala代码来处理传入的字符串,格式化字符串,将其附加到中,并将带有转义unicode的格式化的返回给调用方进行其他处理。 Scala编译器在有调用的行中抱怨以下错误:

  • 按照说明:编写一个静态方法,将一个整数作为形参,如果参数值为偶数,则返回布尔值True,如果参数值为奇数,则返回False。我的方法似乎必须调用int而不是布尔值。话虽如此,我不知道如何从调用int的方法返回布尔值。我试过了,但不管用。 编辑语言是Java。\nedit 2-对于将来关注此问题的人来说,我最初的意思是键入私有静态int result。不是私有的静态布尔结果。那个错误最终修复了我的代