Java JTextField和JComboBox的通用类型

Java JTextField和JComboBox的通用类型,java,swing,jtable,tablecellrenderer,tablecelleditor,Java,Swing,Jtable,Tablecellrenderer,Tablecelleditor,我想根据列数和数据类型创建一个动态表。问题是,当我想从JTextField和JComboBox泛型类型列表中获取元素时。我必须从不同的泛型类型进行迭代,但要将表类型添加到一个泛型类型中。我认为主要问题在于cretaeTable()方法 public class Table { public String getColumnName() { return columnName; } public void setColumnName(String col

我想根据列数和数据类型创建一个动态表。问题是,当我想从
JTextField
JComboBox
泛型类型列表中获取元素时。我必须从不同的泛型类型进行迭代,但要将表类型添加到一个泛型类型中。我认为主要问题在于
cretaeTable()
方法

public class Table {


    public String getColumnName() {
        return columnName;
    }
    public void setColumnName(String columnName) {
        this.columnName = columnName;
    }
    public String getDatatype() {
        return datatype;
    }
    public void setDatatype(String datatype) {
        this.datatype = datatype;
    }
    private String columnName;
    private String datatype;

}

            List<JTextField> fields = new ArrayList<JTextField>();
            List<JComboBox> combos = new ArrayList<JComboBox>();

        // adding elemet 

        public void addNewElements(ActionEvent evt) {
                System.out.println("txtInputColNum.getText():: " +txtNumColumn.getText());
                if(!(txtNumColumn.getText()== null || txtNumColumn.getText().equals("")))   {
                    if(Integer.parseInt(txtNumColumn.getText())>0){
                        noOfColumn =Integer.parseInt(txtNumColumn.getText());
                        int txtFieldX= 10;
                        int comboFieldX = 120;

                        for (int i= 0; i < noOfColumn; i++){ 
                             JTextField newJTextField = new JTextField("",4);
                             newJTextField.setBounds(txtFieldX, 60, 100, 25);
                             String course[] = {"VARCHAR2","NUMBER","DATE"};
                             JComboBox combo = new JComboBox(course);
                             combo.setBounds(comboFieldX, 60, 100, 25);
                             fields.add(newJTextField);

                            this.add(newJTextField);                    
                            this.add(combo);
                            combos.add(combo);
                            txtFieldX = txtFieldX+250;
                            comboFieldX = comboFieldX+250;
                        }

                    }

                }   

                this.repaint();
                this.validate();
            }


    // call createTable method


        public void createTable(ActionEvent evt) {
            List<Table> tabList = new ArrayList<Table>();

            System.out.println("fields "+ fields.size());
            for(JTextField textField :fields){
                Table table = new Table();
                //System.out.println("textField:: "+ textField.getText());          
                table.setColumnName(textField.getText().toString());
                tabList.add(table);
            }

            for(JComboBox comboField :combos){
                Table table2 = new Table();
                System.out.println("comboField:: "+ comboField.getSelectedItem().toString());           
                table2.setDatatype(comboField.getSelectedItem().toString());
                tabList.add(table2);
            }


            for(Table tableModel:tabList){
                System.out.println("getColumnName "+ tableModel.getColumnName());
                System.out.println("getDatatype "+ tableModel.getDatatype());
            }
        }
公共类表{
公共字符串getColumnName(){
返回列名称;
}
public void setColumnName(字符串columnName){
this.columnName=columnName;
}
公共字符串getDatatype(){
返回数据类型;
}
public void setDatatype(字符串数据类型){
this.datatype=数据类型;
}
私有字符串列名;
私有字符串数据类型;
}
列表字段=新的ArrayList();
列表组合=新建ArrayList();
//添加元素
public void addNewElements(ActionEvent evt){
System.out.println(“txtInputColNum.getText()::”+txtNumColumn.getText());
如果(!(txtNumColumn.getText()==null | | txtNumColumn.getText().equals(“”)){
if(Integer.parseInt(txtNumColumn.getText())>0){
noOfColumn=Integer.parseInt(txtNumColumn.getText());
int txtFieldX=10;
int comboFieldX=120;
对于(inti=0;i
回答(@trashgod)的所有内容都是正确的,您的模型是错误的,将关于模型方法的任何内容从一个表移动到另一个模型,只需将其删除,不要放置JComponent!!!对于XxxTableModel,可能只存储Sting值,请阅读Oracle tutotrial关于渲染器和编辑器概念的内容,您的问题不是关于泛型的,只是关于渲染器和编辑器概念…我想创建表脚本,例如表名、列名、数据类型、长度值JAVA Swing UI textinput、combo。用户可以输入表名和列字段号。单击“创建”按钮时,添加所有列名、数据类型、长度和生成以及用于在指定数据库中创建表的ddl脚本