【问题标题】:Create JTable from ArrayList从 ArrayList 创建 JTable
【发布时间】:2013-04-04 02:02:42
【问题描述】:

现在我设法将文件中的对象放入ArrayList,我必须将它们显示到JTable

这些是我的 ArrayList 中包含的 3 个对象

Lieu<Double, String>(45.573715, -73.900295, "p1");
Lieu<Double, String>(45.573882, -73.899748, "p2");
Lieu<Double, String>(45.574438, -73.900099, "p3");

Lieu 类中,我有方法getX()getY()

但我不知道如何在JTable 中显示它们。

Longitude           Latitude
45.573715           -73.900295
45.573882           -73.899748
45.574438           -73.900099

这是我的开始:

public class MonModel extends AbstractTableModel{

    @Override
    public int getColumnCount() {
        return 2;
    }

    @Override
    public int getRowCount() {
        return l.size();//l is the arraylist that contains the 3 elements
    }

    @Override
    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;
    }

【问题讨论】:

    标签: java swing arraylist jtable abstracttablemodel


    【解决方案1】:

    使用TableModel 显示JTable 中的数据。例如:

    在 UI 类中,将表格模型设置为表格。

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

    表模型类

    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;
        }
    }
    

    经纬度类。

    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.
    }
    

    另请阅读How to use Tables

    【讨论】:

      【解决方案2】:

      使用您的TableModel 创建JTable 并将其添加到JFrame。还可以考虑覆盖getColumnName(),如here 所示。另见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);
      

      【讨论】:

        猜你喜欢
        • 2013-09-26
        • 2015-01-14
        • 2021-11-01
        • 1970-01-01
        • 2012-01-27
        • 2014-09-15
        • 2023-01-04
        • 2018-12-14
        • 1970-01-01
        相关资源
        最近更新 更多