Witam, zwracam się do Was z gorącą prośbą o pomoc w rozwiązaniu takiego problemu, tworzę sobie tabele i wypełniam ją danymi, w każdym wierszu jest komórka zawierająca Checkboxa, w jaki sposób mogę sprawdzić które z nich zostały zaznaczone, w taki sposób mógłbym uzyskać nr indexu wiersza w którym nastąpiło zaznaczenie Checkboxa.
przykład:
package com.test1;
import java.awt.BorderLayout;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import com.i_test.testRMI;
public class RamkaTabela extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public RamkaTabela() throws RemoteException, MalformedURLException, NotBoundException
{
String name = "//localhost:2034/Server";
testRMI tr = (testRMI) Naming.lookup(name);
String[] columnNames = { "TYTUŁ" , "AUTOR" , "STATUS" , "WYPOŻYCZ" };
Object[][] tabKsiazek = new Object[tr.ListaC().size()][4];
for (int i = 0; i < tr.ListaC().size(); i++)
{
tabKsiazek[i][0] = (tr.tytul(i));
tabKsiazek[i][1] = (tr.autor(i));
if (tr.status(i) == 0){tabKsiazek[i][2] = ("Dostępna");}
else{tabKsiazek[i][2] = ("Wypożyczona");}
tabKsiazek[i][3] = (false);
}
final JTable table = new JTable(tabKsiazek,columnNames );
table.setRowHeight(30);
add(table, BorderLayout.CENTER);
JButton printButton = new JButton("WYPOŻYCZ");
JPanel buttonPanel = new JPanel();
buttonPanel.add(printButton);
add(buttonPanel,BorderLayout.SOUTH);
TableColumn tc = table.getColumnModel().getColumn(3);
tc.setCellEditor(table.getDefaultEditor(Boolean.class));
tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
JScrollPane scroll = new JScrollPane(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(scroll,BorderLayout.CENTER);
pack();
}
}