1 package edu.jiangxin.apktoolbox.swing.treetable; 2 3 import java.awt.Component; 4 import java.awt.event.MouseEvent; 5 import java.io.Serial; 6 import java.util.EventObject; 7 8 import javax.swing.AbstractCellEditor; 9 import javax.swing.JTable; 10 import javax.swing.JTree; 11 import javax.swing.table.TableCellEditor; 12 13 public class MyTreeTableCellEditor extends AbstractCellEditor implements TableCellEditor { 14 @Serial 15 private static final long serialVersionUID = 1L; 16 17 private JTree tree; 18 private JTable table; 19 20 public MyTreeTableCellEditor(JTree tree, JTable table) { 21 this.tree = tree; 22 this.table = table; 23 } 24 25 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int r, int c) { 26 return tree; 27 } 28 29 public boolean isCellEditable(EventObject e) { 30 if (e instanceof MouseEvent) { 31 int colunm1 = 0; 32 MouseEvent me = (MouseEvent) e; 33 int doubleClick = 2; 34 MouseEvent newME = new MouseEvent(tree, me.getID(), me.getWhen(), me.getModifiersEx(), me.getX() - table.getCellRect(0, colunm1, true).x, me.getY(), doubleClick, me.isPopupTrigger()); 35 tree.dispatchEvent(newME); 36 } 37 return false; 38 } 39 40 @Override 41 public Object getCellEditorValue() { 42 return null; 43 } 44 45 }