2017-04-19 60 views
-1

我有一个程序有两个表,没有Jtables,我想添加拖放。 它几乎是与工作:Java表拖放(无JTable)获得列

public void drop(DropTargetEvent event) { 
    if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) { 
     DropTarget target = (DropTarget) event.widget; 
     TableItem item = (TableItem) event.item; 
     String data = (String) event.data; 
     int col=1; 
     item.setText(col,data); 
     System.out.println(" DROP: " + data); 
    } 
} 

随着event.item我得到了正确的行,但我怎么得到“整数关口”的右列,当我释放了鼠标按键?

+0

不要你@FXML工作? –

+0

@ImpulseTheFox这被标记为Swing,而不是JavaFX,所以我想答案是否定的。 – Axel

+1

“TextTransfer”类属于SWT API,所以我认为这个问题可能是错误的标记。 –

回答

0

THX格雷格-449,所以它正在

public void drop(DropTargetEvent event) { 
if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) { 
    // Get the dropped data 
    DropTarget target = (DropTarget) event.widget; 
    Table table = (Table) target.getControl(); 
    TableItem item = (TableItem) event.item; 
    String data = calc.KM_DEC_KM_V((String) event.data); 
    int col=1; 
    Control absolut = getParent().getDisplay().getFocusControl(); 
    if (item != null){ 
     col = getColumn(table,event.x + absolut.toControl(item.getBounds(0).x,item.getBounds(0).y).x); 
     if (col==1 || col==2) { 
      item.setText(col,data); 
     } 
    } 
    table.redraw(); 
    System.out.println(" DROP: " + data); 
} 
} 

private static int getColumn(Table table, int x) 
{ 
    int overallWidth = 0; 

    for(int i = 0; i < table.getColumnCount(); i++) 
    { 
     overallWidth += table.getColumn(i).getWidth(); 
     System.out.println("overallWidth "+ overallWidth); 
     if(x < overallWidth) 
     { 
      return i; 
     } 
    } 

    return -1; 
}