Java 正在尝试将双[][]数组输入JTable
我试图将一个数字数组输入到JTable中,但遇到了问题。也就是说,错误“java.lang.double[][]无法转换为javax.swing.TableModel”,我假设问题与JTable无法读取double有关,但一些澄清或修复将非常有用,谢谢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 }, {
// 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的更多信息,请参见