Java的。绘制的数组是自动转置的

时间:2014-04-16 13:09:21

标签: java arrays swing jpanel paintcomponent

我最近开始使用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

有谁知道造成这种情况的原因是什么?它使得我想要绘制数据的数组不是那么直观且非常不方便。

1 个答案:

答案 0 :(得分:0)

尝试编写这样的方法:

g.drawString(tab[i][j]+"", 20+j*20, 20+i*20);

(i和j在最后两个参数中交换)