Java中带注释的JTable
如何使用注释在Java中创建JTable?我想这样做:JTable table=newjtable(Products.class)。我可以吗?其中Products是一个具有多个属性的类,如:id、price、productName。CodeProject中有一篇很好的文章和源代码用于此: Java运行时中没有这样的注释(至少目前是这样)。您可以实现自己的方法 定义注释以标记给定对象的列: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();
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?虽然此链接可以回答问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面更改,只有链接的答案可能会变得无效。答案可能太长,但让我包括要点。