Java上传图片

时间:2015-03-21 18:41:24

标签: java image io upload buffer

这是我在stackoverflow中的第一篇文章:D

对不起我的英语(我是意大利语)

所以我有一个名为setFrame

的方法
public static void setFrame()
{
    JFrame GameMain = new JFrame();
    GameMain.setSize(width, high);
    GameMain.setLocationRelativeTo(null);
    GameMain.setTitle("Tic Tac Toe!");
    GameMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Grid grid = new Grid(600, 600);
    GameMain.add(grid);
    GameMain.pack();
    GameMain.setVisible(true);


}

这是Grid类

public class Grid
{

private static int high;
private static int width;
public Grid(int width, int high)
{
    width = width;
    high = high;
    BufferedImage img = null;
    try {
        img = ImageIO.read(new File("/grids/griglia1.png"));
    } catch (IOException e) {
    }

}

}

好的问题是,在方法setFrame中我写了“GameMain.add(grid);” 控制台给我一个错误 “Container类型中的方法add(Component)不适用于参数(Grid)”

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

据我所知,您想要将图像添加到JFrame中。但是,您的实施存在一些问题。首先,您无法将图像直接添加到组件中。您需要将它们封装在JLabel中。此外,您无法将网格类添加到JFrame的原因是因为它不是swing组件。

完成您要做的事情的最简单方法是创建一个JPanel,然后将其添加到框架中,然后创建一个封装图像的JLabel并将其添加到JPanel。

public static void setFrame()
{
    JFrame GameMain = new JFrame();
    GameMain.setSize(width, high);
    GameMain.setLocationRelativeTo(null);
    GameMain.setTitle("Tic Tac Toe!");
    GameMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel GamePanel = new JPanel();
    GamePanel.setSize(width, high);
    GameMain.add(GamePanel);
    background = new JLabel(new ImageIcon(ImageIO.read(new File("/grids/griglia1.png"))));
    GamePanel.add(background);
    GameMain.pack();
    GameMain.setVisible(true);
}

这样您就可以完全绕过Grid类。希望这会有所帮助。