Tôi tò mò muốn gọi phương thức ghi đè valueChanged
nếu một hàng trong JTable
đã được nhấp đúp. Hiện tại, đoạn mã dưới đây đạt được một hành động nhấp chuột hoặc phím mũi tên sự kiện để điều hướng qua danh sách mọi người và sẽ điều chỉnh JLabel
tương ứng. Những gì tôi đang cố gắng làm là một cái gì đó tương tự như tôi đã làm cho một cú nhấp chuột, nhưng thời gian này NẾU và CHỈ NẾU một hàng đã được nhấp đúp chuột dto
sẽ thay đổi khác không có gì xảy ra. Làm thế nào để làm điều này :(Trình nghe nhấp chuột đôi trên JTable trong 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 {
}
}
});
}
không chắc chắn của phần còn lại ở trên ...
Trình ghi chuột có vẻ phù hợp hơn. –
có, nhưng không chắc chắn về phần điều chỉnh để có được hàng – MooHa
Vấn đề nhận hàng là gì? Hoặc là đã được chọn và bạn có thể lấy nó bằng 'JTable.getSelectedRow()' hoặc bạn sử dụng điểm sự kiện chuột và phương thức: http://docs.oracle.com/javase/7/docs/api/javax/swing /JTable.html#rowAtPoint(java.awt.Point) –