在Java上找不到符号错误?
我收到此错误:在Java上找不到符号错误?
symbol : constructor JTable(float[][],java.lang.String[])
location: class javax.swing.JTable
table = new JTable(dataValues, columnNames);
下面
是代码
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
import javax.swing.table.*;
public class benchtesting extends JFrame
{
private JTabbedPane tabbedPane;
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
private JTable table;
private JScrollPane scrollPane;
public static void main(String args[])
{
benchtesting mainFrame = new benchtesting();
mainFrame.setVisible(true);
}
public benchtesting()
{
setSize(280,200);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocation(1300,280);
setTitle("Photoreceptor Analysis");
JPanel topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
getContentPane().add(topPanel);
// Create the tab pages
createPage1();
// createPage2();
// createPage3();
// Create a tabbed pane
tabbedPane = new JTabbedPane();
tabbedPane.addTab("Table", panel1);
tabbedPane.addTab("Intensity Map", panel2);
tabbedPane.addTab("Notes", panel3);
topPanel.add(tabbedPane, BorderLayout.CENTER);
}
public void createPage1()
{
panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
float dataValues_all[]= new float[400];
BufferedReader inputFile2=null;
BufferedReader inputFile=null;
try {
FileReader freader =new FileReader("results.txt");
inputFile2 = new BufferedReader(freader);
String read = "";
String number ="";
for (int linenum=0; linenum<400; linenum++) {
read = inputFile2.readLine();
if(read != null && read.startsWith("D"))
{
number = read.substring(9,15);
float real_numbers = Float.parseFloat(number);
real_numbers= real_numbers*2817217;
System.out.println(Math.round(real_numbers)+" cells/mm^2");
dataValues_all[linenum] = real_numbers;
}
}
// System.out.println("hmm "+dataValues_all[398]);
String columnNames[] = {"1","2","3","4","5","6","7","8","9","10"};
float dataValues[][]= new float [1][10]; //1 row, 10 coloumns
dataValues[0][0] = dataValues_all[2];
dataValues[0][1] = dataValues_all[6];
dataValues[0][2] = dataValues_all[10];
dataValues[0][3] = dataValues_all[14];
dataValues[0][4] = dataValues_all[18];
dataValues[0][5] = dataValues_all[22];
dataValues[0][6] = dataValues_all[26];
dataValues[0][7] = dataValues_all[30];
dataValues[0][8] = dataValues_all[34];
dataValues[0][9] = dataValues_all[38];
table = new JTable(dataValues, columnNames);
scrollPane = new JScrollPane(table);
panel1.add(scrollPane, BorderLayout.CENTER);
} catch(Exception y) { y.printStackTrace(); }
}}
JTable
的构造函数需要参数(Object[][] rowData, Object[] columnNames)
。所以当调用该构造函数时,您需要使用该类型的值调用它。
传递String[]
作为Object[]
是没有问题的(因为String
是Object
,但经过float[][]
作为Object[][]
是无效的(因为float
不是一个Object
)。
随着Java5中的“拳”原始类型(如float
)转化为包装对象(如Float
)成为可能,这意味着Float a = 0.1f;
有效,但装箱不适用于阵列。
对于您的问题,最好的解决方案可能是将您的变量dataValues
更改为Float[][]
。
不能使用基本类型的多维数组。你需要使用一个多维的对象数组。
这是无效:
float[][] arr;
这是有效的:
Float[][] arr;
这根本不是真的。你可以做float [] []数组或int [] []就好了。你将它与List或Collection混淆。 – 2011-01-13 18:16:03
float是原始类型,不是对象。
JTable类实际上没有接受2维浮点数组和常规字符串数组的构造函数。它具有构造器
JTable(Object[], String[])
因此,只要改变
float dataValues[][]= new float [1][10];
到
Object dataValues[][]= new Object [1][10];
和享受。说“谢谢”自动装箱...
JTable(Object[][] rowData, Object[] columnNames)
http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JTable.html
构造JTable二维数组rowData中显示的值,其列名称为columnNames。
如前所述,构造函数带有对象,不能传递原始的多维数组。
你在编译时遇到这个错误吗?你是否在运行时获得它?你的类路径是什么样的?细节,我们需要它们。 – 2011-01-13 18:05:13
仅供参考:编译在`table = new JTable(dataValues,columnNames);`的第108行失败。 – slartidan 2011-01-13 18:07:58