当前位置: 首页 > 知识库问答 >
问题:

如何在AWT中将图像添加到框架中?

尹光辉
2023-03-14

我试过这个,但不起作用。

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.Panel;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class Gfx
{
  public static void main(String[] args)
  {
    Frame f = new Frame ("Gfx");
    f.addWindowListener (new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          f.dispose (); }});
    Panel p = new Panel ();
    f.add(p);
    BufferedImage image = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_ARGB);
    p.add(image);
    f.pack();
    f.setVisible (true);
  }
}

错误是:

Gfx.java:21: error: no suitable method found for add(BufferedImage)
    p.add(image);
     ^
    method Component.add(PopupMenu) is not applicable
      (argument mismatch; BufferedImage cannot be converted to PopupMenu)
    method Container.add(Component) is not applicable
      (argument mismatch; BufferedImage cannot be converted to Component)

缓冲图像不是组件。如何将其转换为组件

共有1个答案

皇甫心思
2023-03-14

如果您想使用AWT绘图,请使用Canvas。在JavaSwing中,您创建了一个绘图JPanel

我修改了您的代码以创建以下GUI:

我缩小了图片的尺寸,这样图形用户界面更适合答案。

这是完整的可运行代码。

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;

public class Gfx {
    public static void main(String[] args) {
        Frame f = new Frame("Gfx");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                f.dispose();
            }
        });

        Canvas canvas = new Canvas() {
            private static final long serialVersionUID = 1L;

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(200, 200);
            }

            @Override
            public void paint(Graphics g) {
                super.paint(g);
                BufferedImage image = new BufferedImage(200, 200,
                        BufferedImage.TYPE_INT_ARGB);
                g.drawImage(image, 0, 0, this);
            }
        };

        f.add(canvas);
        f.pack();
        f.setVisible(true);
    }
}
 类似资料:
  • 问题内容: 我试图将背景图像添加到我的框架中,但是我没有做任何工作。 我设计了一种老虎机,该老虎机由添加到容器中的几个面板组成。现在,我正在尝试为框架添加漂亮的背景。 我尝试使用绘画方法。但是,由于我已经在使用绘制方法绘制卷轴图像,因此它无法在背景上运行。 我还尝试添加JLabel,但是当我这样做时,它会覆盖所有内容或被覆盖,这取决于我如何称呼它。以下是我的代码;任何帮助都感激不尽: 问题答案:

  • 我正在Java AWT学习GUI编程,有点卡住了。我不能在一个框架中添加几个复选框我正在尝试的代码是- 错误在checkbox1.setbounds()和checkbox2.setbounds()上计算- 未为“类型”复选框定义方法setBounds(int,int,int,int) 和mainframe.add()- 类型容器中的方法add(Component)不适用于参数(复选框) 有人能解释

  • 问题内容: 最近8个小时我一直在阅读文档,但没有发现任何可以帮助我的东西。大概是,但是没有代码在工作,因为它一直说“找不到图像URL”并引发异常。但是我还有其他项目,从来没有这个问题。 因此,有一个类包含这样的月份: 到目前为止,一切都很好。我什至可以在控制台中对其进行测试,并且效果很好,并且可以按值排序。现在,当我尝试从资源中添加图像时,出现了我之前提到的问题:找不到URL。但是,我只能使用图像

  • 我试图找到一种方法,将图像添加到JavaFx TableView列中,该列包含通过hibernate从H2数据库填充的其他列中的数据。TableView是在JavaFx场景生成器中设计的。 到目前为止,我一直在努力总结: 控制器类: 我得到一个错误在说. 这是我第一次尝试将图像添加到TableView中。 我从昨天开始四处看看,但现在似乎被卡住了。我希望得到一些帮助。我非常感谢你的帮助。 这是创建

  • 我正在开发一个图像过滤器应用程序。但是如果我没有任何图片,就不能尝试。 我知道我可以在手机上测试它,但这不一样,因为我需要错误信息和其他东西。 我只是想从AVD的图库中访问一个图像,这样我就可以测试我的应用程序。我怎么加一个? 我正在使用Android Studio。我看到了一些关于如何在Eclipse中做到这一点的例子,但我没有使用它。 那么,如何将图像添加到模拟器图像库?

  • 问题内容: 我有一个JPanel,我想向其中添加即时生成的JPEG和PNG图像。 到目前为止,我在Swing教程中看到的所有示例,特别是在Swing示例中,都使用ImageIcon。 我将这些图像生成为字节数组,它们通常比示例中使用的通用图标大,尺寸为640x480。 使用ImageIcon类在JPanel中显示该大小的图像时是否存在任何(性能或其他)问题? 什么是平常做的呢? 如何不使用Imag

  • 我是第一次开发颤振应用程序。。我在添加图像时遇到问题。我有以下问题: 在哪里创建图像文件夹? 在哪里添加资产标签pubspec.ymal? 这需要任何资产文件夹吗? 我所尝试的: 在pubspec内部。ymal: 完整文件: 错误日志: 我的主菜。dart代码: 我指的是这个教程https://flutter.io/tutorials/layout/ 此外,我想问,有没有在颤振清洁重建的工具,因为

  • 问题内容: 我正在尝试找到一种将图像添加到JavaFx TableView列的方法,该图像具有通过hibernate从H2数据库填充的其他列中的数据。TableView是在JavaFx Scene Builder中设计的。 到目前为止,这是我设法做到的: 控制器类: 我说那是一个错误。 这是我第一次尝试将图像添加到TableView中。 从昨天开始,我一直四处张望,但现在似乎被困住了。我希望能有所