1

私はJAVAが初めてで、JTableを作成しようとしています。私が望むのは、ユーザーが Jtable のコンボボックスから選択を行うたびに、Jtable が現在の日付をコンボボックスの隣のセルに入れることです。コードを書きましたが、コードはセル値を更新できません。これが私のコードです(今のところ、Jtableで行1列4に「a」を挿入したいだけです)。

 public class GChamber extends JPanel {
private boolean DEBUG = true;
 ListSelectionModel listSelectionModel;
public GChamber() {

    ...

    JTable table1 = new JTable(new Table1());
    listSelectionModel = table1.getSelectionModel();

    table1.setSelectionModel(listSelectionModel);

    ...

    TableColumn TestName=table1.getColumnModel().getColumn(3);
    final JComboBox comboBox= new JComboBox();

    //Setup comboBox. The data of comboBox is from another Jtable.
    for(int i=0;i<table2rowlength;i++)
    {
     comboBox.addItem(Listofdiease[i]);
    }

    comboBox.addActionListener(new ActionListener() 
    TestName.setCellEditor(new DefaultCellEditor(comboBox));
    {

        @Override
        public void actionPerformed(ActionEvent e) {

             String userinput = (String)comboBox.getSelectedItem();
             Table1 temp=new Table1();
              for(int i=0;i<table2rowlength;i++)
                {
                  if (userinput.equals(Listofdiease[i])) {
                      temp.setValueAt("a", 1, 4);

                    }
                }

        }
    });


   ....


}
public class Table1 extends AbstractTableModel  {


        String[] cName1 = {"1","2","3","4","5", "6"};
         Object[][] data1 = {
                {"CC040-2", new Integer(1),"", "","",""}, 
                {"CC040-2", new Integer(2),"Rowing", "", "",""},
                {"CC040-2", new Integer(3),"Knitting", "", "",""},
                {"CC040-2", new Integer(4),"Speed reading", "", "",""},
                {"CC040-2", new Integer(5),"Pool", "", "",""},
                {"CC040-2", new Integer(6),"Pool", "", "",""},
                {"CC040-2", new Integer(7),"Pool", "", "",""},
                {"CC040-2", new Integer(8),"Pool", "", "",""},
                {"CC040-2", new Integer(9),"Pool", "", "",""},
                {"CC040-2", new Integer(10),"Pool", "", "",""},
                {"CC040-2", new Integer(11),"Pool", "", "",""},
                {"CC040-2", new Integer(12),"Pool", "", "",""},
                {"CEA003", new Integer(13),"Pool","", "",""},
                {"CEA003", new Integer(14),"Pool", "", "",""},
                {"CEA003", new Integer(15),"Pool", "", "",""},
                {"CEA003", new Integer(16),"Pool", "", "",""},
                {"CEA004", new Integer(17),"Pool", "", "",""},
                {"CEA004", new Integer(18),"Pool", "", "",""},
                {"CEA004", new Integer(19),"Pool", "", "",""},
                {"CEA004", new Integer(20),"Pool", "", "",""},
        };




        public int getColumnCount() {
            return cName1.length;
        }

        public int getRowCount() {
            return data1.length;
        }

        public String getColumnName(int col) {
            return cName1[col];
        }

        public Object getValueAt(int row, int col) {
            return data1[row][col];
        }


        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }


        public boolean isCellEditable(int row, int col) {

            if (col < 2) {
                return false;
            } else {
                return true;
            }
        }


        public void setValueAt(Object value, int row, int col) {
            if (DEBUG) {
                System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            }

            data1[row][col] = value;
            fireTableCellUpdated(row, col);

            if (DEBUG) {
                System.out.println("New value of data:");
                printDebugData();
            }
        }

        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + data1[i][j]);
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        }


        public void addTableModelListener(TableModelListener l) {


        }

}

このコードが機能しない理由と修正方法を教えてくれる人はいますか?

4

1 に答える 1