Create JTable from ArrayList

前端 未结 2 1805
天涯浪人
天涯浪人 2021-01-27 09:40

Now that I managed to put the objects from a file into a ArrayList, I have to display them into a JTable.

These are the 3 objects contained in

相关标签:
2条回答
  • 2021-01-27 10:17

    Use a TableModel for showing data in the JTable. For Example:

    In UI class, set the table model to the table.

    JTable table = new JTable(new MonModel());
    

    Table Model class

    class MonModel extends AbstractTableModel {
    
        private List<LatNLon> l;
        private String[] columnNames = {"Longitude", "Latitude"};
    
        public MonModel() {
            l = new ArrayList<LatNLon>();
    
            l.add(new LatNLon("45.573715", "-73.900295"));
            l.add(new LatNLon("45.573715", "-73.900295"));
            l.add(new LatNLon("45.573715", "-73.900295"));
        }
    
        @Override
        public String getColumnName(int column) {
            return columnNames[column];
        }
    
        public int getColumnCount() {
            return 2;
        }
    
        public int getRowCount() {
            return l.size();
        }
    
        public Object getValueAt(int rowIndex, int columnIndex) {
            if(columnIndex==0){
                return l.get(rowIndex).getX();
            }
            else if(columnIndex==1){
                return l.get(rowIndex).getY();
            }
            return null;
        }
    }
    

    Latitude and Longitude class.

    class LatNLon {
        private String x;
        private String y;
    
        public LatNLon(String x, String y) {
            this.x = x;
            this.y = y;
        }
    // Code: For Getters and Setters.
    }
    

    Also read How to use Tables.

    0 讨论(0)
  • 2021-01-27 10:19

    Use your TableModel to create a JTable and add it to a JFrame. Also consider overriding getColumnName(), as shown here. See also How to Use Tables.

    MonModel model = new MonModel();
    JTable table = new JTable(model);
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(new JScrollPane(table), BorderLayout.CENTER);
    f.pack();
    f.setLocationByPlatform(true);
    f.setVisible(true);
    
    0 讨论(0)
提交回复
热议问题