在Java中如何在Jtable上显示数组?
我编写了一个java程序,用数组和循环显示十名学生的结果。如何在在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
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,而不是传递数据和标头。然后可以使用该表创建滚动窗格。