2011-01-13 14 views
3

私はこのエラーを取得しています:以下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(); } 

}} 
+0

コンパイル時にこのエラーが発生していますか?実行時にそれを取得していますか?あなたのクラスパスはどのように見えますか?詳細、我々はそれらが必要です。 –

+0

FYI:108行目の 'table = new JTable(dataValues、columnNames);'でコンパイルが失敗します。 – slartidan

答えて

2

JTableのコンストラクタは、引数が(Object[][] rowData, Object[] columnNames)であると想定しています。そのコンストラクタを呼び出すときには、その型の値で呼び出す必要があります。 Object[]としてString[]を渡す

StringObjectですが、floatObjectではないのでObject[][]としてfloat[][]を渡すと)(有効でないため(問題ありません。Java5で

の「ボクシング」 (floatのような)プリミティブ型は、のように可能です。恐らくあなたの問題の最良の解決策は、変数dataValuesFloat[][]に変更することです。

2

です。オブジェクトの多次元配列を使用する必要があります。

これは無効です。

float[][] arr; 

これが有効である:

Float[][] arr; 
+0

これはまったく真実ではありません。 float [] [] arrayまたはint [] []を使っても問題ありません。あなたはリストやコレクションと混同しています。 –

+2

@Amir Raminfar:もちろん、あなたは** float [] [] **配列を行うことができます。 ** JTable **の構築には使用できません。質問の文脈といくつかの視点で答えを読んでください! –

0

は、最初のパラメータはObject[][]を拡張する予定JTableに該当するコンストラクタがありません。 floatはプリミティブ型であり、Objectを拡張しません。 Floatはそうするオブジェクトです。代わりにそれを使用してください。

+0

プリミティブ/オブジェクト情報全体に皆様に感謝します。 フロートをフロートに変更しました。 – razshan

0

floatはオブジェクトではなくプリミティブ型です。

0

Javadocsを参照してください。 Float[][](オブジェクト)

0

JTableクラスには、実際には2次元の浮動小数点配列と通常の文字列配列を受け入れるコンストラクタがありません。それはとてもコンストラクタ

JTable(Object[], String[])

を持っている、ちょうど

Object dataValues[][]= new Object [1][10];

、お楽しみに

float dataValues[][]= new float [1][10];

を変更します。オートボクシングに "ありがとう"と言ってください...

関連する問題