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

在JFrame中将图像绘制到JPanel

寿毅庵
2023-03-14
问题内容

我正在设计一个程序,该程序在JFrame中包含两个JPanel,一个用于保存图像,另一个用于保存GUI组件(Searchfields等)。我想知道如何将图像绘制到JFrame中的第一个JPanel?

这是我的构造函数的示例代码:

public UITester() {
    this.setTitle("Airplane");
    Container container = getContentPane();
    container.setLayout(new FlowLayout());
    searchText = new JLabel("Enter Search Text Here");
    container.add(searchText);
    imagepanel = new JPanel(new FlowLayout());
    imagepanel.paintComponents(null);
   //other constructor code

}

public void paintComponent(Graphics g){
    super.paintComponents(g);
    g.drawImage(img[0], -50, 100, null);
}

我试图覆盖JPanel的paintComponent方法来绘制图像,但是当我尝试编写时,这在我的构造函数中导致了一个问题:

imagepanel.paintComponents(null);

因为这将只允许我传递null的方法,而不传递Graphics
g的方法,所以有人知道对此方法的修复或我可以用来在JPanel中绘制图像的其他方法吗?感谢帮助!:)

祝一切顺利,在此先感谢您!马特


问题答案:

我想提出一种更简单的方法,

  image = ImageIO.read(new File(path));
  JLabel picLabel = new JLabel(new ImageIcon(image));

耶!现在,您的图像是摆动组件!将其添加到框架或面板或通常执行的任何操作中!可能也需要重新粉刷,例如

  jpanel.add(picLabel);
  jpanel.repaint();


 类似资料:
  • 问题内容: 如何将图像绘制到JPanel或JFrame,我已经阅读了oracle的相关教程,但似乎无法正确完成。我需要将图像“ ”显示在一组特定的坐标上。这是我到目前为止所拥有的。 在Main()中 提前致谢! 问题答案: 试试这个:

  • 我觉得我经历了我需要做的一切: 创建一个名为paintComponent的图形类,并扩展JComponent 将图形g作为参数,然后执行Graphics2D g2d=(Graphics2D)g 将图形类添加到我的JFrame 我没发现有什么问题,所以我有点困惑 我的代码在这里: 和

  • 问题内容: 将图片绘制到jframe时出现null异常错误。我调试代码并检查图像和框架是否不为null,但在将图像绘制到框架时仍然抛出NULL异常。 请看一看 : 问题答案: NPE可能来自这里: 根据文档: 为此组件创建图形上下文。如果此组件当前不可显示,则此方法将返回null。 1)不要将其用作坏习惯/不能持久使用,除非组件可见,否则它将返回。 2)相反,使用和覆盖不要忘记在覆盖中作为第一个呼

  • 我能得到一个如何让图像出现在box 2d主体上的简单答案吗?我试着为图像和主体制作一个x和y int,但是一旦主体移动,图像就会保持静态。如果你回答了,请尽可能解释代码。如果你对我的完整源代码感兴趣,请查看我的帖子:http://www.java-gaming.org/topics/libgdx-drawing-a-sprite-on-to-a-box2d-body/33894/msg/31992

  • 我目前正在尝试制作一个画布,我可以绘制的东西,并使它出现在一个JFrame。 为此,我打算在一个JPanel组件中有一个BufferedImage,paintComponent方法可以从中进行绘制。 理想情况下,我希望能够从给定的JFrame中引用这个缓冲图像,然后使用其Graphics2D向其绘制素材,paintComponent方法可以在使用缓冲图像绘制时显示这些素材。 我这样做是为了避免直接

  • 问题内容: 我无法在JFrame上绘制此椭圆形。 框架显示,但其中未绘制任何内容。我在这里做错了什么? 问题答案: 您创建了一个静态方法,该方法不会覆盖paint方法。现在,其他人已经指出,您需要覆盖paintComponent等。但是,为了快速修复,您需要执行以下操作: 但是,正如其他人指出的那样,在JFrame上进行绘制非常棘手。最好使用JPanel。