Moo*_*oHa 29 java swing jtable double-click listselectionlistener
我很好奇如何valueChanged在JTable双击行中时调用重写方法.现在,下面的代码片段实现了一个单击操作或事件箭头键,以便在人员列表中导航并进行相应调整JLabel.我正在尝试做的是类似于我点击一次的类似事情,但这次IF和ONLY如果双击一行dto就会改变其他事情.我该怎么做呢 :(
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 {
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
不确定上面的其余部分......
Anu*_*iti 78
试试这个:
mytable.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent mouseEvent) {
JTable table =(JTable) mouseEvent.getSource();
Point point = mouseEvent.getPoint();
int row = table.rowAtPoint(point);
if (mouseEvent.getClickCount() == 2 && table.getSelectedRow() != -1) {
// your valueChanged overridden method
}
}
});
Run Code Online (Sandbox Code Playgroud)
将事件处理程序的代码重新定位到宿主类中的私有方法中,然后实现MouseListener或扩展,MouseAdapter然后在那里调用私有方法。第一步(即创建私有方法可以帮助您从多个事件处理程序调用相同的逻辑)。
MouseHandler通过调用可以轻松检测双击MouseEvent.getClickCount()
| 归档时间: |
|
| 查看次数: |
55882 次 |
| 最近记录: |