我最近开始使用Java进行冒险,我使用的是IntelliJ IDEA 13.1.1。 我的问题是:当我想在屏幕上绘制一个数组时,它会被转换时被绘制。
import java.awt.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class Main extends JPanel
{
public int tab[][]=new int[3][6];
public static final int CANVAS_WIDTH=1280;
public static final int CANVAS_HEIGHT=1024;
public Main()
{
for(int i=0; i<3; i++)
for(int j=0;j<6;j++)
tab[i][j]=3*j+i*2;
tab[1][4]=99;
setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
setBackground(Color.BLACK);
g.setColor(Color.WHITE);
for(int i=0; i<3; i++)
for(int j=0;j<6;j++)
g.drawString(tab[i][j]+"", 20+i*20, 20+j*20);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JFrame frame=new JFrame("tests");
frame.setContentPane(new Main());
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
在屏幕上我得到了结果:
0 2 4
3 5 7
6 8 10
9 11 13
12 99 16
15 17 19
当我使用System.out.print在绘图函数外显示数组时,我得到:
0 3 6 9 12 15
2 5 8 11 99 17
4 7 10 13 16 19
有谁知道造成这种情况的原因是什么?它使得我想要绘制数据的数组不是那么直观且非常不方便。
答案 0 :(得分:0)
尝试编写这样的方法:
g.drawString(tab[i][j]+"", 20+j*20, 20+i*20);
(i和j在最后两个参数中交换)