Java 在netbeans中向表中的组合框添加项

Java 在netbeans中向表中的组合框添加项,java,swing,netbeans,jtable,jcombobox,Java,Swing,Netbeans,Jtable,Jcombobox,我有一个表,其中一列需要包含组合框 当我运行下面的代码时,我在每个单元格中都会得到组合框,但这些项不会添加到其中。当我尝试使用system.out.println(val)打印项目时,它们会被打印出来,但不会添加到组合框中 我怎么做 private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { for(Entry<String, HashSet<String>> avar : A

我有一个表,其中一列需要包含组合框

当我运行下面的代码时,我在每个单元格中都会得到组合框,但这些项不会添加到其中。当我尝试使用
system.out.println(val)
打印项目时,它们会被打印出来,但不会添加到组合框中

我怎么做

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {  

    for(Entry<String, HashSet<String>> avar : Annotation.resultSet.entrySet()) {
        Object[] row = new Object[2];
        row[0] = avar.getKey();
        JComboBox comboBox = new JComboBox();
        int i = 1;

        DefaultTableModel model = (DefaultTableModel) annoTab.getModel();
        model.addRow(row);
        TableColumn valueColumn = annoTab.getColumnModel().getColumn(1);
        setUpValueColumn(valueColumn, avar.getValue());
    }  
}                                        

public void setUpValueColumn(TableColumn sportColumn, HashSet<String> values) {

    JComboBox comboBox = new JComboBox(new DefaultComboBoxModel(values.toArray()));

    for(String val : values) {
       System.out.println(val);
       comboBox.addItem(val);
    }

    sportColumn.setCellEditor(new DefaultCellEditor(comboBox));

   ComboBoxTableCellRenderer renderer
                = new ComboBoxTableCellRenderer();
   sportColumn.setCellRenderer(renderer);
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt){
对于(条目avar:Annotation.resultSet.entrySet()){
Object[]行=新对象[2];
行[0]=avar.getKey();
JComboBox comboBox=新的JComboBox();
int i=1;
DefaultTableModel=(DefaultTableModel)annoTab.getModel();
model.addRow(row);
TableColumn valueColumn=annoTab.getColumnModel().getColumn(1);
setUpValueColumn(valueColumn,avar.getValue());
}  
}                                        
public void setUpValueColumn(TableColumn、sportColumn、HashSet值){
JComboBox comboBox=新的JComboBox(新的defaultcomboxmodel(values.toArray());
for(字符串值:值){
系统输出打印项次(val);
comboBox.addItem(val);
}
setCellEditor(新的DefaultCellEditor(组合框));
ComboBoxTableCellRenderer渲染器
=新ComboBoxTableCellRenderer();
sportColumn.setCellRenderer(渲染器);
}
完整代码

AnnotationGeneration.java

public class AnnotationGeneration extends javax.swing.JFrame {

    class ComboBoxTableCellRenderer extends JComboBox implements TableCellRenderer {

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            setSelectedItem(value);
            return this;
        }
    }

    public AnnotationGeneration() {
        initComponents();       
        DefaultTableModel model = (DefaultTableModel) annoTab.getModel();
        while(model.getRowCount() > 0){
            for(int i = 0 ; i < model.getRowCount();i++){
                model.removeRow(i);
            }
        }
    }

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        DefaultTableModel model = (DefaultTableModel) annoTab.getModel();
        TableColumn valueColumn = annoTab.getColumnModel().getColumn(1);
        CustomTableCellEditor customEditor = new CustomTableCellEditor();
        for (Entry<String, HashSet<String>> avar : Annotation.resultSet.entrySet()) {
            Object[] row = new Object[2];
            row[0] = avar.getKey();
            model.addRow(row);
            setUpValueColumn(valueColumn, customEditor, avar.getValue());
        }
        valueColumn.setCellEditor(customEditor);
    }

    public void setUpValueColumn(TableColumn sportColumn, CustomTableCellEditor customEditor, HashSet<String> values) {
        customEditor.addComboBox(new JComboBox(new DefaultComboBoxModel(values.toArray())));
        ComboBoxTableCellRenderer renderer = new ComboBoxTableCellRenderer();
        sportColumn.setCellRenderer(renderer);

    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         


    }                                        

    public static String readFile( String file ) throws IOException {
        BufferedReader reader = new BufferedReader( new FileReader (file));
        String         line = null;
        StringBuilder  sb = new StringBuilder();
        String         ls = System.getProperty("line.separator");

        while( ( line = reader.readLine() ) != null ) {
        sb.append( line );
        sb.append( ls );
        }
        return sb.toString();
    }

    public static void main(String args[]) 
    {
        Annotation.ScoreCalculator();


        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AnnotationGeneration().setVisible(true);
            }
        });        
    }

    static HashMap<String, String> annotation = new HashMap<String, String>();
    static Vector<String> value = new Vector<String>();
    JTextField feildArray[];

    private javax.swing.JTable annoTab;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;

}
public class Annotation {

    public static HashMap<String, AnnotationVar> anotVarMap = new HashMap<String, AnnotationVar>();
    public static HashMap<String, HashSet<String>> resultSet = new HashMap<String, HashSet<String>>();


    private static float contVal(String b, String c) {
        ...
    }

    private static float contVal2(String b, String c) {
        ...
    }
    private static float querVal(String a1) {
        ...
    }
    private static void valueGen() throws IOException {
        ...
    }

    ArrayList<AnnotationVar> attList = new ArrayList<AnnotationVar>(anotVarMap.values());
    Collections.sort(attList);


        for(AnnotationVar att: attList) {
            resultSet.put(att.get_attribute(), new HashSet<String>());
        }

        while (st.hasMoreTokens()) {    
            String tok = st.nextToken();

            System.out.println(tok);
            for(AnnotationVar avar : anotVarMap.values()) {

                if(avar.get_values().contains(tok)) {
                    System.out.println(avar);
                    //attrib = avar.get_attribute();
                    resultSet.get(avar.get_attribute()).add(tok);
                }

            }

        }  
        System.out.println("Updated collection :"+resultSet);
    }

    public static void ScoreCalculator() {

        try 
        {
            DBconnection con = new DBconnection();
            PreparedStatement statement;
            String x = "select count(*) from queryvalues";
            statement = con.getConnection().prepareStatement(x);
            ResultSet rs = statement.executeQuery();
            while (rs.next()) 
            {
                String name = rs.getString(1);
                int num = Integer.valueOf(name);
                for(int i=1;i<num+1;i++)
                {
                    String y = "select attribute from queryvalues where slno = ?";
                    statement = con.getConnection().prepareStatement(y);
                    statement.setInt(1, i);
                    ResultSet rs2 = statement.executeQuery();   
                    while (rs2.next()) 
                    {
                        String a1 = rs2.getString(1);
                        anotVarMap.put(a1,new AnnotationVar(a1));
                        //System.out.println(a1);
                        String a = "D:/test5.txt" ;
                        String abc = AnnotationGeneration.readFile(a);
                        StringTokenizer st = new StringTokenizer(abc);

                        float cv1 = 1;
                        float cv4 =1;
                        while (st.hasMoreTokens()) 
                        {

                            String tok = st.nextToken();
                            float cv0 = contVal(a1,tok);
                            cv1 = cv0*cv1;
                            float cv3 = contVal2(a1,tok);
                            cv4=cv3*cv4;  
                        }
                        float cv = cv1/cv4;                    
                        float qv1 = querVal(a1);
                      //System.out.println("querying value =" + qv1);
                      //System.out.println("content value =" + cv);
                        float score = cv*qv1;
                      //System.out.println("score of " + a1 + "=" + score);
                       String z = "INSERT into qvtemp(attribute,score) VALUES (?,?) ON DUPLICATE KEY UPDATE score = VALUES(score)";
                         statement = con.getConnection().prepareStatement(z);
                        statement.setString(1,a1);
                        statement.setFloat(2,score);
                        statement.executeUpdate(); 
                        anotVarMap.get(a1).set_score(score);
                    }    
                }  

                ArrayList<AnnotationVar> attList = new ArrayList<AnnotationVar>(anotVarMap.values());
                Collections.sort(attList);

                System.out.println(anotVarMap);
                System.out.println(attList);
            }

            valueGen();
            System.out.println(anotVarMap);
        } catch (SQLException | IOException ex) {
            Logger.getLogger(AnnotationGeneration.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
公共类注释生成扩展了javax.swing.JFrame{
类ComboBoxTableCellRenderer扩展JComboBox实现TableCellRenderer{
@凌驾
公共组件GetTableCellRenderComponent(JTable表、对象值、布尔isSelected、布尔hasFocus、int行、int列){
setSelectedItem(值);
归还这个;
}
}
公共注释生成(){
初始化组件();
DefaultTableModel=(DefaultTableModel)annoTab.getModel();
而(model.getRowCount()>0){
对于(int i=0;i
AnnotationVar.java

public class AnnotationVar implements Comparator<AnnotationVar>, Comparable<AnnotationVar>{

    public AnnotationVar() {
        this.attribute = new String();
        this.values = new HashSet<String>();
        this.score = 0.0f;
    }

    public AnnotationVar(String attribute) {
        this();
        this.attribute = attribute;
    }

    public AnnotationVar(String attribute, HashSet<String> values, float score){
        this();
        this.attribute = attribute;
        this.values = values;
        this.score = score;
    }

    private String attribute;
    private HashSet<String> values;
    private float score;

    public String get_attribute() {
        return this.attribute;
    }

    public HashSet<String> get_values() {
        return this.values;
    }

    public AnnotationVar set_values(HashSet<String> values) {
        this.values = values;
        return this;
    }

    public AnnotationVar set_score(float score){
        this.score = score;
        return this;
    }

    @Override
    public int compare(AnnotationVar o1, AnnotationVar o2) {
        return -Float.compare(o1.score, o2.score);
    }

    @Override
    public int compareTo(AnnotationVar av){
      return -Float.compare(this.score, av.score);
    }

    @Override
    public String toString() {
        return this.attribute + " " + this.values.toString() + " " + Float.toString(this.score);
    }
}
public类AnnotationVar实现了Comparator,Comparable{
公共注释变量(){
this.attribute=新字符串();
this.values=new HashSet();
这个分数=0.0f;
}
公共注释变量(字符串属性){
这个();
this.attribute=属性;
}
公共注释变量(字符串属性、哈希集值、浮点分数){
这个();
this.attribute=属性;
这个值=值;
这个分数=分数;
}
私有字符串属性;
私有哈希集值;
私人浮动分数;
公共字符串get_属性(){
返回此.attribute;
}
公共HashSet get_值(){
返回这个值;
}
公共注释变量集值(哈希集值){
这个值=值;
归还这个;
}
公共注释变量集合分数(浮动分数){
这个分数=分数;
归还这个;
}
@凌驾
公共整数比较(注释变量o1,注释变量o2){
返回-浮动。比较(o1.score,o2.score);
}
@凌驾
公共整数比较(注释变量av){
返回-浮动比较(this.score,av.score);
}
@凌驾
公共字符串toString(){
返回this.attribute+“”+this.values.toString()+“”+Float.toString(this.score);
}
}
Annotation.java

public class AnnotationGeneration extends javax.swing.JFrame {

    class ComboBoxTableCellRenderer extends JComboBox implements TableCellRenderer {

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            setSelectedItem(value);
            return this;
        }
    }

    public AnnotationGeneration() {
        initComponents();       
        DefaultTableModel model = (DefaultTableModel) annoTab.getModel();
        while(model.getRowCount() > 0){
            for(int i = 0 ; i < model.getRowCount();i++){
                model.removeRow(i);
            }
        }
    }

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        DefaultTableModel model = (DefaultTableModel) annoTab.getModel();
        TableColumn valueColumn = annoTab.getColumnModel().getColumn(1);
        CustomTableCellEditor customEditor = new CustomTableCellEditor();
        for (Entry<String, HashSet<String>> avar : Annotation.resultSet.entrySet()) {
            Object[] row = new Object[2];
            row[0] = avar.getKey();
            model.addRow(row);
            setUpValueColumn(valueColumn, customEditor, avar.getValue());
        }
        valueColumn.setCellEditor(customEditor);
    }

    public void setUpValueColumn(TableColumn sportColumn, CustomTableCellEditor customEditor, HashSet<String> values) {
        customEditor.addComboBox(new JComboBox(new DefaultComboBoxModel(values.toArray())));
        ComboBoxTableCellRenderer renderer = new ComboBoxTableCellRenderer();
        sportColumn.setCellRenderer(renderer);

    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         


    }                                        

    public static String readFile( String file ) throws IOException {
        BufferedReader reader = new BufferedReader( new FileReader (file));
        String         line = null;
        StringBuilder  sb = new StringBuilder();
        String         ls = System.getProperty("line.separator");

        while( ( line = reader.readLine() ) != null ) {
        sb.append( line );
        sb.append( ls );
        }
        return sb.toString();
    }

    public static void main(String args[]) 
    {
        Annotation.ScoreCalculator();


        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AnnotationGeneration().setVisible(true);
            }
        });        
    }

    static HashMap<String, String> annotation = new HashMap<String, String>();
    static Vector<String> value = new Vector<String>();
    JTextField feildArray[];

    private javax.swing.JTable annoTab;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;

}
public class Annotation {

    public static HashMap<String, AnnotationVar> anotVarMap = new HashMap<String, AnnotationVar>();
    public static HashMap<String, HashSet<String>> resultSet = new HashMap<String, HashSet<String>>();


    private static float contVal(String b, String c) {
        ...
    }

    private static float contVal2(String b, String c) {
        ...
    }
    private static float querVal(String a1) {
        ...
    }
    private static void valueGen() throws IOException {
        ...
    }

    ArrayList<AnnotationVar> attList = new ArrayList<AnnotationVar>(anotVarMap.values());
    Collections.sort(attList);


        for(AnnotationVar att: attList) {
            resultSet.put(att.get_attribute(), new HashSet<String>());
        }

        while (st.hasMoreTokens()) {    
            String tok = st.nextToken();

            System.out.println(tok);
            for(AnnotationVar avar : anotVarMap.values()) {

                if(avar.get_values().contains(tok)) {
                    System.out.println(avar);
                    //attrib = avar.get_attribute();
                    resultSet.get(avar.get_attribute()).add(tok);
                }

            }

        }  
        System.out.println("Updated collection :"+resultSet);
    }

    public static void ScoreCalculator() {

        try 
        {
            DBconnection con = new DBconnection();
            PreparedStatement statement;
            String x = "select count(*) from queryvalues";
            statement = con.getConnection().prepareStatement(x);
            ResultSet rs = statement.executeQuery();
            while (rs.next()) 
            {
                String name = rs.getString(1);
                int num = Integer.valueOf(name);
                for(int i=1;i<num+1;i++)
                {
                    String y = "select attribute from queryvalues where slno = ?";
                    statement = con.getConnection().prepareStatement(y);
                    statement.setInt(1, i);
                    ResultSet rs2 = statement.executeQuery();   
                    while (rs2.next()) 
                    {
                        String a1 = rs2.getString(1);
                        anotVarMap.put(a1,new AnnotationVar(a1));
                        //System.out.println(a1);
                        String a = "D:/test5.txt" ;
                        String abc = AnnotationGeneration.readFile(a);
                        StringTokenizer st = new StringTokenizer(abc);

                        float cv1 = 1;
                        float cv4 =1;
                        while (st.hasMoreTokens()) 
                        {

                            String tok = st.nextToken();
                            float cv0 = contVal(a1,tok);
                            cv1 = cv0*cv1;
                            float cv3 = contVal2(a1,tok);
                            cv4=cv3*cv4;  
                        }
                        float cv = cv1/cv4;                    
                        float qv1 = querVal(a1);
                      //System.out.println("querying value =" + qv1);
                      //System.out.println("content value =" + cv);
                        float score = cv*qv1;
                      //System.out.println("score of " + a1 + "=" + score);
                       String z = "INSERT into qvtemp(attribute,score) VALUES (?,?) ON DUPLICATE KEY UPDATE score = VALUES(score)";
                         statement = con.getConnection().prepareStatement(z);
                        statement.setString(1,a1);
                        statement.setFloat(2,score);
                        statement.executeUpdate(); 
                        anotVarMap.get(a1).set_score(score);
                    }    
                }  

                ArrayList<AnnotationVar> attList = new ArrayList<AnnotationVar>(anotVarMap.values());
                Collections.sort(attList);

                System.out.println(anotVarMap);
                System.out.println(attList);
            }

            valueGen();
            System.out.println(anotVarMap);
        } catch (SQLException | IOException ex) {
            Logger.getLogger(AnnotationGeneration.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
公共类注释{
public static HashMap anotVarMap=new HashMap();
公共静态哈希映射结果集=