java - 如何将 BufferedImage 绘制到 JFrame 上

标签 java swing jframe png bufferedimage

因此,我正在编写代码,该代码应该采用名为 text2.png 的已保存 png 图像并将其绘制在 JFrame 内。这是我的代码:

public class TrainFromData extends JComponent{
    public void train(String fileName) throws Exception
    {
        try
        {
            File file = new File(fileName);
            BufferedImage img = ImageIO.read(file);
            Graphics2D g2d = img.createGraphics();
            g2d.drawImage(img, 50, 50, 150, 150, null);
            paint(g2d);
            g2d.dispose();
        }

        catch(IOException ex)
        {
            ex.printStackTrace();
        }
    }
    public void paint(Graphics g)
    {
        super.paint(g);
    }

    public static void main(String[] args) throws Exception {
        JFrame testFrame = new JFrame();
        testFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        final TrainFromData comp = new TrainFromData();
        comp.setPreferredSize(new Dimension(320, 200));
        testFrame.getContentPane().add(comp, BorderLayout.CENTER);
        testFrame.pack();
        testFrame.setVisible(true);
        comp.train("text2.png");
    }
}

我的代码只是绘制一个空的 JFrame,我不知道如何让它自己绘制图像。谢谢!

最佳答案

How to get BufferedImage painted onto JFrame

无需进行自定义绘画。

只需使用 JLabel 即可显示图像。

BufferedImage img = ImageIO.read(file);
JLabel label = new JLabel( new ImageIcon(img) );
...
testFrame.add(label, BorderLayout.CENTER);

关于java - 如何将 BufferedImage 绘制到 JFrame 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34441784/

相关文章:

java - 为什么我不能将 1000000 个整数的数组从一个 Activity 发送到另一个?

java - Java Swing 桌面应用程序中的自动更新功能

java - GridBagLayout 无法正常工作

java - JFrame调整大小问题

java - 用不同颜色的方 block 填充框架

java - 如何在 java 中使 JFrame 模糊?

java - 如何使用 Hibernate 框架和 MySql 数据库提高 Web 应用程序的搜索性能

java - 为什么我无法在JSP页面中创建某些JAVA类的对象

java - 动态设置 jTextField 值

java - 获取 BufferedImage 作为资源,以便它可以在 JAR 文件中工作