Java中带注释的JTable

Java中带注释的JTable,java,ajax,swing,annotations,jtable,Java,Ajax,Swing,Annotations,Jtable,如何使用注释在Java中创建JTable?我想这样做:JTable table=newjtable(Products.class)。我可以吗?其中Products是一个具有多个属性的类,如:id、price、productName。CodeProject中有一篇很好的文章和源代码用于此: Java运行时中没有这样的注释(至少目前是这样)。您可以实现自己的方法 定义注释以标记给定对象的列: public @interface TableColumn { String name();

如何使用注释在Java中创建JTable?我想这样做:JTable table=newjtable(Products.class)。我可以吗?其中Products是一个具有多个属性的类,如:id、price、productName。

CodeProject中有一篇很好的文章和源代码用于此:

Java运行时中没有这样的注释(至少目前是这样)。您可以实现自己的方法

定义注释以标记给定对象的列:

public @interface TableColumn {
    String name();
    int index();
}
使用此注释标记要在模型对象中显示的字段:

class Product {
    @TableColumn(name="Product Name", index=0)
    String productName;
    ....
}
创建一个新的TableModel类-您可以从DefaultTableModel继承-并检查给定对象的给定注释

class ObjectTableModel extends DefaultTableModel {
    private Object[] objects;
    private String[] columns;
    public ObjectTableModel(Object[] objects) {
        Field[] fields = Object.class.getDeclaredFields();
        for (Field field : fields) {
            if (field.isAnnotationPresent(TableColumn.class)) {
                //Add field to the list
            }
        }
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        //return the value from objects[rowIndex] with 
    }

    @Override
    public int getRowCount() {
        return objects.length;
    }

    @Override
    public int getColumnCount() {
        return columns.length;
    }

    @Override
    public String getColumnName(int column) {
        return columns[column];
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return columnClasses[columnIndex];
    }
}
类ObjectTableModel扩展了DefaultTableModel{
私有对象[]对象;
私有字符串[]列;
公共ObjectTableModel(对象[]对象){
Field[]fields=Object.class.getDeclaredFields();
用于(字段:字段){
if(field.isAnnotationPresent(TableColumn.class)){
//将字段添加到列表中
}
}
}
@凌驾
公共对象getValueAt(int行索引、int列索引){
//使用从对象[rowIndex]返回的值
}
@凌驾
public int getRowCount(){
返回对象长度;
}
@凌驾
public int getColumnCount(){
返回列的长度;
}
@凌驾
公共字符串getColumnName(int列){
返回列[列];
}
@凌驾
公共类getColumnClass(int columnIndex){
返回columnClasses[columnIndex];
}
}

我更倾向于从注释中创建一个自定义表格模型,然后使用该模型创建JTable。谢谢。我真的需要一些帮助。具体是什么帮助?您首先需要将您的大问题分解为其组成步骤,然后尝试单独解决每个步骤。如果卡住了,那么回到这里,问一个更具体、更可回答的问题。那么我如何才能从注释中创建costum TableModel?虽然此链接可以回答问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面更改,只有链接的答案可能会变得无效。答案可能太长,但让我包括要点。