drawImage根本没有绘图,找不到错误

时间:2018-06-02 00:31:39

标签: java

我是Java新手,我正在尝试用它进行国际象棋训练。 我在使用Graphic方法时遇到了一些麻烦。 我列出了错误可能存在的功能。 下面的代码显示了一个名为main的函数。 这个函数在我的包中处理Graphic的东西。

    public class GUI_main extends JComponent{

    private final int tam = 100;
    private final int tamTab = 8 * tam;
    Image torre;

    public void inicializaTabuleiro(Torre t)
    { //Sets the window properties and the "tile" proper image.
        JFrame janela = new JFrame("Xadrez");
        janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        janela.setSize(816, 839);
        janela.getContentPane().add(new GUI_main());
        janela.setLocationRelativeTo(null);
        janela.setResizable(false);
        janela.setVisible(true);
        paintPeca(t); /*this one is the function that sets the correct image
        for the tile that will be on the board*/
        System.out.println("Janela inicializada com sucesso!");
    }
    ...

下一个是“paintPeca”函数,它应该初始化“Image torre”。

    public void paintPeca(Torre t) 
{
    System.out.println(t.imgPeca());
    torre = Toolkit.getDefaultToolkit().getImage(t.imgPeca());
}

最后是我的绘画功能:

public void paint(Graphics g)
{
    Graphics2D g2 = (Graphics2D) g;
    g2.setPaint(Color.black);

    int x = 0, y = 0;

    while(y<tamTab) //draw board
    {
        if(y%200 == 0) 
        {
        g2.draw(new Rectangle2D.Double(x, y, tam, tam));
        x = x + tam;
        g2.fill(new Rectangle2D.Double(x, y, tam, tam));
        x = x + tam;
        }
        else
        {
            g2.fill(new Rectangle2D.Double(x, y, tam, tam));
            x = x + tam;
            g2.draw(new Rectangle2D.Double(x, y, tam, tam));
            x = x + tam;
        }
        if(x == tamTab)
        {
            y = y + tam;
            x = 0;
        }
    }

    x = 14;
    y = 19;

    g2.drawImage(torre, x, y, this); //draw tower
    g2.finalize();
    ...

这些功能应该在它上面画一个板和一个塔。 它向我展示了电路板,但没有向我展示(图像托雷),我也不知道原因。 “t.imgPeca()”返回一个字符串(图像的路径),它是正确的,正如我之前测试的那样。 由于我是Java的新手,这可能是一些愚蠢的错误,但我没有在堆栈的其他页面中找到关于drawImage函数的答案。

0 个答案:

没有答案