2012-04-14 78 views
0

我有一个JTable,其中一列预填充30分钟时隙(6.30-24.00)。Java - 模数 - 从一个表添加到另一个表

现在我有另一张表格,它有一个电影标题列表,其中包含一个包含电影持续时间的列(以分钟为单位 - 例如140分钟)。

现在我有一个按钮来做到这一点。我做了一段代码,有趣的是,有时可以工作,有时不会(在我添加3-4个标题之后)。它根据数学equation.It增加了时隙给我:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "DRAMA" 

这是代码:

btnAddProg.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 

         try { 
         int dur = Integer.parseInt(progTableModel.getValueAt(listTable.getSelectedRow(), listTable.getSelectedColumn()+1).toString())/30; 
         int durT = Integer.parseInt(progTableModel.getValueAt(listTable.getSelectedRow(), listTable.getSelectedColumn()+1).toString()); 
      if(durT % 30 != 0) 
      { 
       dur += 1; 
      } 

       for(int i = 0; i < dur; i++) 
       { 
        String value = progTableModel.getValueAt(listTable.getSelectedRow(), listTable.getSelectedColumn()).toString(); 
             String value2 = progTableModel.getValueAt(listTable.getSelectedRow(), listTable.getSelectedColumn()+2).toString(); 
             channel1DataTitle.set(chOneTable.getSelectedRow()+i, value); 
             channel1DataGenre.set(chOneTable.getSelectedRow()+i, value2); 
       } 
             chOneTable.repaint(); 
         } catch (IndexOutOfBoundsException f) { 

          JOptionPane.showMessageDialog(frame, 
          "Please select a row in the Channel table!", 
           "Channel row not selected", 
           JOptionPane.PLAIN_MESSAGE); 


         } 


        } 
       }); 

谁能告诉我有什么不对?

回答

0

它在你点击正确的列时起作用,当你点击另一个时失败,不是吗?您已将固定逻辑(解析持续时间编号)应用于变量列(取决于用户点击的确切列)。用固定号码访问列,不要检查选定的列索引。

+0

嗯,我怎么编码? – Brian 2012-04-14 16:42:36

+0

是的,这取决于我点击的位置。我有一个前面的按钮,其中我有类似的问题,但我不明白我怎么能在这一个应用相同的修复。 – Brian 2012-04-14 16:43:29

+0

将'listTable.getSelectedColumn()+ 1'替换为持续时间列的确切索引:) – 2012-04-14 16:44:37

0

您正试图解析不转换为数字的字符串。看起来问题是你正在处理任何用户选择的问题。您需要限制您正在处理的数据来自表中的特定列,或者在尝试处理数据之前验证数据。

+0

但是为什么它有时会起作用? – Brian 2012-04-14 16:36:54

+0

因为有时候,用户会选择你所期待的。其他时候,他们选择的不是数字。如果您查看例外情况,它会告诉您您正试图将字符串“DRAMA”转换为数字。 – elevine 2012-04-14 16:39:32

+0

你可能不应该这样做:listTable.getSelectedColumn()+ 1。相反,您可能希望从所选行中选择特定的列。 – elevine 2012-04-14 16:40:02

相关问题