簡體   English   中英

如何在Java的Jtable上顯示數組?

[英]How do I display an array on a Jtable in Java?

我編寫了一個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

    }
}

不要嘗試創建2D陣列。 不要將自己限制為固定的行數。 而是創建一個空的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 );

同樣,變量名稱(如“名稱”)不應以大寫字母開頭。 您的大多數變量都是正確的。 保持一致並遵循Java約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM