我是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函数的答案。