2013-02-23 5 views
0

У меня есть запрос ... код работает нормально, но я не могу получить значение последней ячейки последней строки и последнего столбца. Ниже приведен код ... пожалуйста руководствоКак получить значение последней ячейки в JTable?

с этим кодом я добавлять строки динамически JTable: если (e.getSource() == ADDB) {

 model.addRow(new Object[3]); 
     repaint(); 

    } 

Ниже приведен код для получения значения из JTable ряда мудрых и позже вместо System.out.println() собираюсь отправить данные в базу данных ...

if(e.getSource()==submit) 
    { 
     int j = table.getRowCount(); 
     for(int row=1;row<j;row++) 
     { 
      for(int column=0;column<3;column++) 
      { 
       System.out.println("row "+row+" Column is "+column);      
       System.out.println(model.getValueAt(row, column)); 
      } 
     } 

    } 
+3

1. Все зависит от вашего 'XxxTableModel ', для лучшей помощи скорее опубликуйте [SSCCE] (http://sscce.org/), короткий, выполнимый, компилируемый, просто о' JTable' и вашем 'XxxTableModel', 2. без какого-либо запроса (hardcode, который как локальная переменная == некоторый тип массива), 3. тот же или подобный вопрос задают 2-3 раза в день – mKorbel

+0

Сначала вам нужно определить, что такое последняя ячейка. Является ли он последним в представлении (который может быть отсортирован и отфильтрован, с переупорядоченными столбцами), или он последний в модели? –

+0

@JB Nizet: ячейка последней ячейки в последней строке. Я динамически добавляю строки в модель. и любое количество строк, которые я могу добавить. Я столкнулся с этой проблемой только в последней ячейке последней строки. – shounak

ответ

3

Что-то вроде этого:

int i= table1.getRowCount()-1; 
int j= table1.getColumnCount(); 
Object [] value = new Object[j]; 
for(int k = 0 ; k<j ; k++) 
{ 
value[k] = model.getValueAt(i,k); 
} 

см Также этот маленький пример

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class TableTest extends JFrame implements ActionListener{ 

    JTable table ; 
    JButton button; 
    public TableTest(){ 
     String []colNames = {"Subject","lecturer"}; 
     String [][] rowDatas = { {"Java Programming","Jon"}, 
           {"C++ Programming","Nuhara"}, 
           {"Mathematicz","Mike"}, 
           {"Database","Saran"} 
           }; 
     table = new JTable(rowDatas,colNames); 

     button = new JButton("Show Last Record"); 
     button.addActionListener(this); 

     this.add(table); 
     this.add(button); 
     this.setVisible(true); 
     this.setSize(300,200); 
     this.setDefaultCloseOperation(3); 
     this.setLayout(new FlowLayout()); 
    } 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     int i= table.getRowCount()-1; 
     int j= table.getColumnCount(); 
     Object [] value = new Object[j]; 
     for(int k = 0 ; k<j ; k++) 
     { 
     //value[k] = table.getValueAt(i,k); 
      System.out.println(table.getValueAt(i, k)); 
     } 
    } 


    public static void main(String...ag){ 
     new TableTest(); 
    } 
} 
+0

Это не работает. Я все еще получаю значение последней ячейки «null»! Спасибо, что попробовали. – shounak

+0

вы можете попробовать значение [k] = table.getValueAt (i, k); – Azad

+0

спасибо за ваши усилия, но он все еще не работает. Я устал от этого сейчас ... разочаровывается! Я не понимаю, что не так с кодом ..... если эта вещь не работает на 2 года, я буду использовать другой способ. Я буду держать всю последнюю строку редактируемой (ложной) и не буду считать эту строку вообще ... я знаю, что это не правильный способ пройти через это ... но сейчас я не вижу никаких надежд.! еще раз спасибо за усилия Ур! – shounak

2

Создание дикое предположение, что вы редактируете последнюю ячейку при нажатии на кнопку «Отправить».

Если да, то см .: Table Stop Editing.

+0

На самом деле я добавляю пустые строки через addob actiolistener, а затем редактирую ячейки с повторно заданными значениями, а затем с помощью submit actionlistener посылаю данные из всех отредактированных ячеек в базу данных ... но, к сожалению, каждый раз, когда ma получает значение последней ячейки как null. Я не понимаю, почему это происходит. – shounak

+0

Вы прочитали ссылку, которую я вам дал? Если это не проблема, вам необходимо опубликовать SSCCE. – camickr

0

Благодаря Азад
Его работает великолепно теперь ...
У меня есть редактировали код немного, чтобы получить данные из всех строк ...

int i= table.getRowCount()-1; 
     int j= table.getColumnCount(); 

     for (int d=1;d<i+1;d++){ // will provide row wise data 
     for(int k = 0 ; k<j ; k++) // will provide column wise data 
     { 
      System.out.println("row num "+d+" "+model.getValueAt(d,k)); 
     } } 
Смежные вопросы