我收到此错误:
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(); }
}}
答案 0 :(得分:2)
您不能使用多维基本类型数组。您需要使用多维对象数组。
这是无效的:
float[][] arr;
这是有效的:
Float[][] arr;
答案 1 :(得分:2)
JTable
的构造函数需要参数(Object[][] rowData, Object[] columnNames)
。因此,在调用该构造函数时,您需要使用该类型的值调用它。
将String[]
作为Object[]
传递是没有问题的(因为String
是Object
,但将float[][]
作为Object[][]
传递无效(因为float
不是 Object
)。
使用Java5,原始类型(如float
)的“装箱”成为包装对象(如Float
)成为可能。这意味着,Float a = 0.1f;
有效。但是拳击不适用于阵列。
问题的最佳解决方案可能是将变量dataValues
更改为Float[][]
类型。
答案 2 :(得分:0)
答案 3 :(得分:0)
float是基本类型,而不是对象。
答案 4 :(得分:0)
请参阅Javadocs。您可能需要创建Float[][]
(对象)
答案 5 :(得分:0)
JTable类实际上没有接受2维浮点数组和常规字符串数组的构造函数。它有构造函数
JTable(Object[], String[])
所以,只需改变
float dataValues[][]= new float [1][10];
到
Object dataValues[][]= new Object [1][10];
并享受。对“自动装箱”说“谢谢”......
答案 6 :(得分:0)
JTable(Object[][] rowData, Object[] columnNames)
http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JTable.html
构造一个JTable,以显示二维数组rowData中的值,列名为columnNames。
如前所述,构造函数接受对象,不能传递原始的多维数组。