java: wie wählen Sie nur eine Zelle in einer jtable und nicht die ganze Zeile
in eine jTable, ich möchte, wenn ein Benutzer klickt auf eine Zelle, dieser Satz, der gedruckt werden auf dem Bildschirm :
I am cell in row X and column Y
wobei x und Y die Zeile und Spalte der angeklickten Zelle.
Was ich aber immer bin ist : wenn ich auf z.B. die Zelle in Zeile 1 und Spalte 4
Ich bekomme die folgende :
I am cell in row 1 and column 0
I am cell in row 1 and column 1
I am cell in row 1 and column 2
....
I am cell in row 1 and column N ( N = number of columns)
D. H. die gesamte Zeile wird ausgewählt.
dies ist der code :
public class CustomTableCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(isSelected) System.out.println("I am cell in row "+row+" and column "+column);
return cell;
}
}
Vielen Dank für jede Hilfe.
sind Sie auf der Bedeutung zu entfernen, markieren Sie ausgewählten JTable Zeile
InformationsquelleAutor shaw | 2011-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
CellRenderers sind, wird für die Darstellung der Zellinhalte. Wenn Sie möchten, zu finden, die Zellen, in denen die Maus geklickt hat, verwenden Sie einen MouseListener und in der mouseClicked-Methode das Feld.
InformationsquelleAutor Dakshinamurthy Karra
Sollten Sie nicht verwenden Sie einen cell-renderer.
Aktivieren Zelle Auswahl auf dem Tisch (mit
setCellSelectionEnabled(true)
), dann bekommen Sie die selection-Modell von der Tabelle (mitgetSelectionModel()
), und fügen Sie einen listener hinzu, der auf diesem selection-Modell. Jedes mal, wenn ein Ereignis ausgelöst wird, verwenden SiegetSelectedRow()
undgetSelectedColumn()
zu wissen, welche Zelle ausgewählt ist.Beachten Sie, dass dies wird Ihnen die ausgewählte Zelle, die geändert werden können mit der Maus oder der Tastatur. Wenn Sie wollen einfach nur wissen, wo die Maus geklickt, dann sehen KDM Antwort.
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
als gut. In Verbindung mitsetCellSelectionEnabled(true)
dies erzeugt den gewünschten Effekt ganz nett.InformationsquelleAutor JB Nizet
InformationsquelleAutor mKorbel
Ändern Sie Ihre
if(isSelected)
zuif (isSelected && hasFocus)
. Das drucken wird nur für die ausgewählte Zelle, anstatt der ausgewählten Zeile.mKorbel Antwort sollte auch funktionieren...
InformationsquelleAutor BenCole
myTable.setCellSelectionEnabled(true);
InformationsquelleAutor Guy Levin