Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中如何在Jtable上显示数组?_Java_Arrays_Swing_Loops - Fatal编程技术网

在Java中如何在Jtable上显示数组?

在Java中如何在Jtable上显示数组?,java,arrays,swing,loops,Java,Arrays,Swing,Loops,我编写了一个java程序,用数组和循环显示十名学生的结果。如何在JTable中显示结果 import java.awt.*; import javax.swing.*; public class StaticTable extends JFrame { // constructor that will display a JTable based on elements received as arguments StaticTable(Object[][] rows, String[] h

我编写了一个java程序,用数组和循环显示十名学生的结果。如何在
JTable
中显示结果

import java.awt.*;
import javax.swing.*;

public class StaticTable extends JFrame {

// constructor that will display a JTable based on elements received as arguments
StaticTable(Object[][] rows, String[] header) {
    super("Bugema Gades for Java class");

    // JPanel to horl the JTable
    JPanel panel = new JPanel(new BorderLayout());
    // constructor of JTable with a fix number of objects
    JTable table = new JTable(rows, header);
    panel.add(new JScrollPane(table));
    add(panel);    // adding panel to frame
    // and display it
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setVisible(true);
    pack();
}

// to run the whole thing
public static void main(String[] args) {

                 int MAX_STUDENTS = 10;
     String[] Names = new String[MAX_STUDENTS];
     double [] arrMark = new double[MAX_STUDENTS];
     String grade = "";

     for (int i = 0; i < MAX_STUDENTS; i++)
     {
     Names[i] =    JOptionPane.showInputDialog("Enter Student Name: ", i  + 1);

     String Mk = JOptionPane.showInputDialog("Enter Student Mark: ", i  + 1);
       arrMark[i] =Integer.parseInt(Mk);

     }


     for (int i = 0; i < MAX_STUDENTS; i++)
     {
       if(arrMark[i] > 100)
           grade = "Error: Invalid entry";
       else if(arrMark[i] > 80)
           grade = "A";
       else if(arrMark[i] > 75)
           grade = "B+";
       else if(arrMark[i] > 70)
           grade = "B";
       else if(arrMark[i] > 65)
           grade = "C+";
       else if(arrMark[i] > 60)
           grade = "C";
       else if(arrMark[i] > 55)
           grade = "D+";
       else if(arrMark[i] > 50)
           grade = "D";
       else
           grade = "F";


     Object[][] data = {
            {1+i,Names[i],arrMark[i],grade}
    };
    // defines the header
    String[] header = {"NO","Name","Mark","Grade"};
    // build the GUI
    new StaticTable(data, header);
        }

// defines rows and column of the JTable

    }
}
import java.awt.*;
导入javax.swing.*;
公共类StaticTable扩展了JFrame{
//将基于作为参数接收的元素显示JTable的构造函数
StaticTable(对象[]行,字符串[]头){
超级(“Bugema Gades for Java类”);
//JPanel将JTable
JPanel panel=newjpanel(newborderlayout());
//具有固定数量对象的JTable构造函数
JTable table=新的JTable(行、标题);
添加(新的JScrollPane(表));
添加(面板);//将面板添加到框架
//并展示它
此.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(真);
包装();
}
//管理整个事情
公共静态void main(字符串[]args){
int MAX_学生=10;
String[]name=新字符串[MAX_STUDENTS];
double[]arrMark=新的double[MAX_学生];
字符串级别=”;
对于(int i=0;i100)
grade=“错误:无效条目”;
否则如果(arrMark[i]>80)
等级=“A”;
否则如果(arrMark[i]>75)
等级=“B+”;
否则如果(arrMark[i]>70)
等级=“B”;
否则如果(arrMark[i]>65)
grade=“C+”;
否则如果(arrMark[i]>60)
等级=“C”;
否则如果(arrMark[i]>55)
grade=“D+”;
否则如果(arrMark[i]>50)
职系=“D”;
其他的
等级=“F”;
对象[][]数据={
{1+i,名称[i],arrMark[i],等级}
};
//定义标题
字符串[]头={“否”、“名称”、“标记”、“等级”};
//构建GUI
新的StaticTable(数据、标题);
}
//定义JTable的行和列
}
}

不要尝试创建二维数组。不要将自己限制在固定的行数内。而是创建一个空的DefaultTableModel,然后一次向其中添加一行数据

代码类似于:

String[] header = {"NO","Name","Mark","Grade"};
DefaultTableModel model = new DefaultTableModel(header, 0);

for (int i = 0; i < MAX_STUDENTS; i++)
{
    ...

    model.addRow( new Object[]{ 1+i, Names[i], arrMark[i], grade} );
}

JTable table = new JTable(model );
String[]header={“NO”、“Name”、“Mark”、“Grade”};
DefaultTableModel=new DefaultTableModel(表头,0);
对于(int i=0;i

此外,变量名(如“Name”)不应以大写字符开头。大多数变量都是正确的。保持一致并遵循Java约定。

thanx但当我运行该文件时,表不会显示出来。你能用我的完整代码说明它应该是怎样的吗。很抱歉,您刚刚更改了方法-
newstatictable(数据,标题)。您只需传递JTable,而不是传递数据和标头。然后可以使用该表创建滚动窗格。