Tôi đang làm việc với Eclipse và tôi có câu hỏi về JXTreeTables. Tôi muốn một cửa sổ, hiển thị một số thông tin về nút, để bật lên, khi một nút được nhấp đúp. Bây giờ, có thể nhận được nút bấm đôi của JXTreeTable hoặc null nếu nhấp chuột không trực tiếp trên một nút?Cách lấy TreeTableNode nhấp đúp?
Trả lời
Tôi đã nhận được câu trả lời về chủ đề kleopatra được đề cập hoạt động hoàn toàn tốt và đơn giản hơn. Đây là mã:
treeTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(final MouseEvent e) {
if (e.getClickCount() != 2) {
return;
}
final int rowIndex = treeTable.rowAtPoint(e.getPoint());
if (rowIndex < 0) {
return;
}
final TreeTableNode selectedNode = (TreeTableNode)treeTable.getPathForRow(rowIndex).getLastPathComponent();
}
});
Giả sử bạn có nghĩa là hành vi của tree.getRowForLocation (...): không có api trên treeTable, bạn nhấn thiếu api và có thể xem xét để nộp một vấn đề cải tiến trong theo dõi vấn đề swingx :-)
Cho đến khi nó sẽ có sẵn, bạn phải tự làm điều đó trong một MouseListener tùy chỉnh mà đại biểu cho phương pháp cây tương ứng. Đi nhẹ (ho ..) bẩn trong loại đúc các renderer cho cột thứ bậc để một JTree:
MouseListener l = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() != 2) return;
int column = treeTable.columnAtPoint(e.getPoint());
if (!treeTable.isHierarchical(column)) return;
Rectangle cell = treeTable.getCellRect(0, column, false);
JXTree tree = (JXTree) treeTable.getCellRenderer(0, column);
// translate x to tree coordinates
int translatedX = e.getX() - cell.x;
int row = tree.getRowForLocation(translatedX, e.getY());
LOG.info("row " + row);
}
};
treeTable.addMouseListener(l);
Chỉ cần cho các hồ sơ, có một sợi song song trong Swinglabs forum over at java.net
Sửa
Các tai họa của các giả định ;-)
Với câu trả lời của OPs, người nghe sẽ kích hoạt nhấp đúp chuột ở bất kỳ đâu trong bảng ô chứa nút, không chỉ khi trực tiếp qua nút (còn gọi là: văn bản của nút). Vì vậy, chỉ ra yêu cầu là nhiều hơn dọc theo dòng tree.getClosestRowForLocation (..) so với các tree.getRowForLocation giả định (..).
- 1. Javafx 2 nhấp và nhấp đúp vào
- 2. Nhấp đúp vào hàng DataGridView?
- 3. mục DataGridView nhấp đúp vào
- 4. Nhận sự kiện nhấp đúp
- 5. Bắt nhấp đúp vào Cocoa OSX
- 6. remap NERDTree Nhấp đúp vào 'T'
- 7. Nhấp đúp vào Làm Nổi bật
- 8. Nhấp đúp vào vs java -jar MyJar.jar
- 9. ASP.Net nhấp đúp vào vấn đề
- 10. NSImageView nhấp đúp vào hành động
- 11. cách nhận thời gian nhấp đúp trong WPF
- 12. Làm cách nào để phân biệt giữa các nhấp chuột đơn và nhấp đúp trong .Net?
- 13. Những người nhấp đúp vào tất cả mọi thứ trên các trang web ... jQuery nhấp đúp vào problemo
- 14. Nhấp đúp vào mục ListBox để mở trình duyệt
- 15. Ngăn chặn nhấp đúp vào nút có knockout.js
- 16. OpenLayers: vô hiệu hóa phóng to khi nhấp đúp vào
- 17. ghi đè JTree nhấp đúp để ngăn mở rộng nút?
- 18. Nhấp đúp chuột vào hàng NSTableView trong Cocoa?
- 19. C# treeview bỏ qua nhấp đúp chỉ tại hộp kiểm
- 20. javascript cho phép nhập vào nhấp đúp vào
- 21. Hoạt động nhấp đúp vào TreeView trong .NET/C#
- 22. Nhấp đúp vào trình cài đặt trong Ubuntu?
- 23. Tắt nhấp đúp vào hoàn tác trong VS2010
- 24. Ngăn ngừa tình cờ nhấp đúp vào một nút
- 25. Thực hiện sự kiện nhấp đúp trên Silverlight 4 Datagrid
- 26. Ngăn việc chọn văn bản sau khi nhấp đúp vào
- 27. Silverlight 5 nhấp đúp luôn trả ClickCount như 1
- 28. Phonegap 2.4.0 với Android 4.2 - hành vi nhấp đúp lạ
- 29. WinForms vô hiệu hóa nhấp đúp và chấp nhận tất cả nhấp chuột?
- 30. Chỉ đạo sự kiện chuột [DllImport ("user32.dll")] nhấp, nhấp đúp vào
vui vì bạn có giải pháp :-) Hãy cẩn thận: theo cách này người nghe sẽ kích hoạt nhấp đúp vào _anywhere_ trong ô bảng có chứa nút, không chỉ khi _directly_ trên nút (aka: văn bản của nó). – kleopatra
Đó là ý định của tôi nhưng rất cám ơn bạn vì câu trả lời của bạn anyway :)! – user107043