将填充了数字值的文件分配给JLabel的2D数组

时间:2012-10-24 06:24:44

标签: java jlabel

107054600
003008529
000000070
004905100
800700900
012003000
700000006
200609004
036010000

这些文件以这种方式存储数独谜题。

我必须能够将这些谜题读入2d int数组和2d Jlabel数组。

仅在读入Int数组时有效。但是,当我尝试使用for循环处理的当前数字分配j Label的图标值时,我得到此编译器错误:

  

构造函数javax.swing.JLabel(int)未定义

为什么会这样?

相关代码如下:

JLabel[][] gridLabels = new JLabel[9][9];
int [][] grid = new int [9][9];  // Game Array

try {
 String fileName1 = new Scanner(new File("./temp.txt")).useDelimiter("\\Z").next();
 Scanner fin;
 fin = new Scanner( new File(fileName1));
 //Reads in the puzzle from a temporary text file

 for(int row=0; row<9; row++)
{
 String line = fin.next();
 for(int col=0; col<9; col++)
  { grid[row][col] = line.charAt(col)-'0'; 
   gridLabels[row][col] = new JLabel(line.charAt(col)-'0');    //PROBLEM HERE//
  }
 }
  } 
  catch (FileNotFoundException exception)
  {System.out.println("Incorrect Selection"); // Catches incorrect selection
  }
  catch (NoSuchElementException exception)
  {System.out.println("No Such Element");
  }

2 个答案:

答案 0 :(得分:1)

javax.swing.JLabel的构造函数中,您可以传递String但不传递int。 您应该将int转换为String,然后再将其传递给Label构造函数。 您可以将int转换为String String.valueOf(i)

查看here进行转化

答案 1 :(得分:0)

line.charAt(col)-'0'的结果是int,错误表明JLabel没有任何带int参数的构造函数。

试试new JLabel(String.valueOf(line.charAt(col)-'0'))