Java JTable不显示值

Java JTable不显示值,java,swing,jtable,Java,Swing,Jtable,我正在EclipseIDE中使用java实现GUI。我想展示一张桌子。这就是我如何实施该计划的 import java.awt.EventQueue; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.text.TabableView; import com.model.Floo

我正在EclipseIDE中使用java实现GUI。我想展示一张桌子。这就是我如何实施该计划的

import java.awt.EventQueue;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.text.TabableView;

import com.model.FloorDetails;

public class ClientGUI {

    private JFrame frame;
    private ClientMain clientMain = new ClientMain();
    private JTable table;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ClientGUI window = new ClientGUI();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public ClientGUI() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        table = new JTable();
        table.setBounds(67, 146, 1, 1);
        frame.getContentPane().add(table);
        executeTable();

    }

    public void executeTable() {
        Object[] columns = new String[] {
                "ID", "Room No", "Floor No", "CO2 Level", "Smoke Level", "Status"
        };


        ArrayList<FloorDetails> arrayList = clientMain.getSensors();

        Object[][] data = new Object[arrayList.size()][6];

        for(int i = 0; i < arrayList.size(); i++) {
            data[i][0] = arrayList.get(i).getId();
            data[i][1] = arrayList.get(i).getRoomNo();
            data[i][2] = arrayList.get(i).getFloorNo();
            data[i][3] = arrayList.get(i).getCo2Level();
            data[i][4] = arrayList.get(i).getSmokeLevel();
            data[i][5] = arrayList.get(i).getStatus();
        }

        table = new JTable(data,columns);
        frame.setTitle("Sensor Details");

    }

}

我在这个项目中哪里做错了?先走一步

代码中的一个问题是,填充一个表,然后将另一个表添加到框架中。解决这一问题的一种方法是

public JTable executeTable(  ) { // Make this method return a JTable
    Object[] columns = new String[] {
            "ID", "Room No", "Floor No", "CO2 Level", "Smoke Level", "Status"
    };

    ArrayList<FloorDetails> arrayList = clientMain.getSensors();

    Object[][] data = new Object[arrayList.size()][6];

    for(int i = 0; i < arrayList.size(); i++) {
        data[i][0] = arrayList.get(i).getId();
        data[i][1] = arrayList.get(i).getRoomNo();
        data[i][2] = arrayList.get(i).getFloorNo();
        data[i][3] = arrayList.get(i).getCo2Level();
        data[i][4] = arrayList.get(i).getSmokeLevel();
        data[i][5] = arrayList.get(i).getStatus();
    }

    table = new JTable( data, columns);
    return table;
}

您不需要
window.frame.setVisible(true)在本方法中的
方法中Hmmm.
表.立根(67146,1,1)您正在将表格的高度和宽度设置为1?此外,使用空布局也不是一个好主意。Micro管理所有位置和大小很麻烦,在环境之间切换时无法工作-例如,不同的操作系统,具有不同的设置,如放大率、字体大小等。实际上,我只是拖放了JTable。我只在自己的@TT.1上实现了executeTable()方法)“实际上我只是拖放了JTable。”。在您了解如何将GUI设计器用于布局之前,它将生成一个丑陋且不可行的GUI。更一般地说:JavaGUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与…的布局填充和边框一起使用。。。。2) 除非与实际问题相关,否则不要添加IDE。考虑到代码可能会像badlky在另一个IDE中一样失败,事实并非如此。3) 在启动时以及在
JScrollPane
中添加表。当需要添加/更改数据时,请更改表模型而不是组件。4) 为了更快地获得更好的帮助,请添加或。表的硬代码数据..我尝试了你的解决方案。但GUI上仍然没有显示任何内容。顺便说一句,谢谢helping@MarketMAD我对答案进行了编辑,如果有帮助,请告诉我
public JTable executeTable(  ) { // Make this method return a JTable
    Object[] columns = new String[] {
            "ID", "Room No", "Floor No", "CO2 Level", "Smoke Level", "Status"
    };

    ArrayList<FloorDetails> arrayList = clientMain.getSensors();

    Object[][] data = new Object[arrayList.size()][6];

    for(int i = 0; i < arrayList.size(); i++) {
        data[i][0] = arrayList.get(i).getId();
        data[i][1] = arrayList.get(i).getRoomNo();
        data[i][2] = arrayList.get(i).getFloorNo();
        data[i][3] = arrayList.get(i).getCo2Level();
        data[i][4] = arrayList.get(i).getSmokeLevel();
        data[i][5] = arrayList.get(i).getStatus();
    }

    table = new JTable( data, columns);
    return table;
}
private void initialize() {
    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    table = executeTable();
    frame.add(table.getTableHeader(), BorderLayout.PAGE_START);
    frame.add(table, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setTitle("Sensor Details");
    frame.setVisible(true);
}