Ich bin neugierig, wie valueChanged
überschrieben Methode nur aufgerufen, wenn eine Zeile in JTable
doppelt geklickt wurde. Für den Moment erreicht das unten stehende Code-Snippet eine Klick-Aktion oder eine Ereignis-Pfeiltaste, um durch eine Liste von Personen zu navigieren und würde JLabel
entsprechend anpassen. Was ich versuche zu tun, ist etwas Ähnliches wie ich für einen Klick getan habe, aber dieses Mal IF und NUR WENN eine Zeile doppelt geklickt wurde dto
würde sich ändern, sonst passiert nichts. Wie mache ich dasDoppelklicken Sie auf Listener auf JTable in Java
class ListDataUI {
public void addListSelectionListener(ListSelectionListener listSelectionListener) {
summaryTable.getSelectionModel().addListSelectionListener(listSelectionListener);
public T getSelectedDTO() {
final int selectedRowIndex = summaryTable.getSelectedRow();
if (selectedRowIndex != -1) {
return data.get(summaryTable.convertRowIndexToModel(selectedRowIndex));
} else {
return null;
}
}
}
}
class MainMenu extends javax.swing.JFrame {
private void initListeners() {
searchTable.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
AcademicDTO dto = (AcademicDTO) searchTable.getSelectedDTO();
acImgLabel.setIcon(new ImageIcon());
label_name.setText(dto.getTitle() + " " + dto.getForename() + " " + dto.getSurname());
label_role.setText("Role: " + dto.getRole());
label_phone.setText("Phone: " + dto.getPhone());
label_room.setText("Room: " + dto.getRoom());
label_hours.setText("Hours: " + dto.getHours());
label_mobile.setText("Mobile: " + dto.getMobile());
if (dto.getImage() != null) {
acImgLabel.setIcon(new ImageIcon(dto.getImage()));
}
}
}
});
}
}
private void initListeners() {
contactTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
ContactDTO dto = (ContactDTO) contactTable.getSelectedDTO();
if (e.getClickCount() == 2) {
System.out.println(dto.getForename());
} else {
}
}
});
}
nicht sicher, ob der Rest oben :(...
Ein MouseListener scheint besser geeignet. –
ja, aber unsicher über den Einstellteil, um die Zeile zu bekommen – MooHa
Was ist das Problem, die Zeile zu bekommen? Entweder ist bereits ausgewählt und Sie können es mit 'JTable.getSelectedRow()' abrufen oder Sie verwenden den Mausereignispunkt und die Methode: http://docs.oracle.com/javase/7/docs/api/javax/swing /JTable.html#rowAtPoint(java.awt.Point) –