Jestem ciekawy, jak wywołać metodę valueChanged
nadpisaną, tylko jeśli wiersz w JTable
został dwukrotnie kliknięty. Na razie poniższy fragment kodu uzyskuje jedno kliknięcie lub klawisz strzałki zdarzenia, aby nawigować po liście osób i odpowiednio dostosowywać JLabel
. Próbuję zrobić coś podobnego, tak jak zrobiłem to za jednym kliknięciem, ale tym razem JEŚLI TYLKO JEŚLI rząd został podwójnie kliknięty, dto
zmieni się, gdy nic się nie stanie. W jaki sposób mogę to zrobić :(Dwukrotne kliknięcie na JTable w Javie
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 {
}
}
});
}
nie pewna reszta powyżej ...
Wydaje się, że MouseListener jest bardziej odpowiedni. –
tak, ale nie masz pewności co do części regulacyjnej, aby uzyskać wiersz – MooHa
Jaki jest problem z uzyskaniem wiersza? Albo jest już wybrane i możesz je uzyskać za pomocą 'JTable.getSelectedRow()' lub używasz punktu zdarzenia myszy i metody: http://docs.oracle.com/javase/7/docs/api/javax/swing /JTable.html#rowAtPoint(java.awt.Point) –