Java 正在尝试将双[][]数组输入JTable

Java 正在尝试将双[][]数组输入JTable,java,swing,compiler-errors,jtable,Java,Swing,Compiler Errors,Jtable,我试图将一个数字数组输入到JTable中,但遇到了问题。也就是说,错误“java.lang.double[][]无法转换为javax.swing.TableModel”,我假设问题与JTable无法读取double有关,但一些澄清或修复将非常有用,谢谢 // Data to be displayed in the JTable, double[][] mile = { {1}, {2}, {3 }, {4 }, {5 }, {6 }, {7 }, {

我试图将一个数字数组输入到JTable中,但遇到了问题。也就是说,错误“java.lang.double[][]无法转换为javax.swing.TableModel”,我假设问题与JTable无法读取double有关,但一些澄清或修复将非常有用,谢谢

// Data to be displayed in the JTable, 
  double[][]  mile = { 
  {1}, 
  {2},
  {3 }, 
  {4 },
  {5 },
  {6 },
  {7 },
  {8 },
  {9 },
  {10 },
  {11 },
  {12 },
  {13 },
  {14 },
  {15 },
  {16 },
  {17 },
  {18 },
  {19 },
  {20 },
  }; 


  double[][]  kilo = { 
  { 1.609 }, 
  { 3.218 },
  { 4.827 }, 
  { 6.436 },
  { 8.045 },
  { 9.654  },
  { 11.263 },
  { 12.872 },
  { 14.481 },
  { 16.09 },
  { 17.699 },
  { 19.308 },
  { 20.917 },
  { 22.526 },
  { 24.135 },
  { 25.825 },
  { 27.434 },
  { 29.043 },
  { 30.654 },
  { 32.261 },
  }; 


  // Column Names for the table.
  String[] titles = { "Miles", "Kilometers" }; 

  // Create the table which is going to display the information.
  JTable table = new JTable(mile, kilo, titles);
  JScrollPane scrollPane = new JScrollPane(table);
  scrollPane.setBounds(20,20,650,250);
  table.setFillsViewportHeight(true);
  infoPanel.add(scrollPane);

如注释中所述,JTable没有提供所需的构造函数。 就我而言,我将使用以下构造函数:
publicjtable(最终对象[][]行数据,最终对象[]列名称)

但为此,您必须调整数据初始化。
代码如下所示:

    // Data to be displayed in the JTable,
    double[] mile = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
    double[] kilo = { 1.609, 3.218, 4.827, 6.436, 8.045, 9.654, 11.263, 12.872, 14.481, 16.09, 17.699, 19.308, 20.917, 22.526, 24.135, 25.825, 27.434, 29.043, 30.654, 32.261 };

    Double[][] tableData = new Double[mile.length][2];

    for (int i = 0; i < mile.length; i++) {
        tableData[i][0] = mile[i];
        tableData[i][1] = kilo[i];
    }


    // Column Names for the table.
    String[] titles = {"Miles", "Kilometers"};

    // Create the table which is going to display the information.
    JTable table = new JTable(tableData, titles);
    table.setFillsViewportHeight(true);
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setBounds(20, 20, 650, 250);
    infoPanel.add(scrollPane);
//要在JTable中显示的数据,
双[]英里={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
双[]基洛={1.609,3.218,4.827,6.436,8.045,9.654,11.263,12.872,14.481,16.09,17.699,19.308,20.917,22.526,24.135,25.825,27.434,29.043,30.654,32.261};
Double[]tableData=新的Double[mile.length][2];
对于(int i=0;i
.1)
滚动窗格.setBounds(20,20650250)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 为了更快地获得更好的帮助,请添加一个or。如果不知道您希望它看起来如何,则很难回答。但是,您可能希望将这两个数组组合起来:
{1,1.609},{2,3.218},
以获得所需的内容,因为它们将成为表中的行。@BeUndead是的,我是这样做的,但目前我的问题是表不会接受双精度并抛出错误代码。我猜你的第一反应就是回答这个?是的
JTable
的构造函数(上面的链接)接受一个数组(数组中的一个),该数组将成为表中的数据。你用2来调用它,它没有构造函数(因此编译器错误)。谢谢,这就解决了问题,你在那里使用的for循环是用来填充表的吗?注意:
mile[i]=i+1
和kilo[i]=1.609*mile[i]`@OwenR98是的,for循环将数据转换成JTable所需的格式。有关JTable及其TableModel的更多信息,请参见