2017-04-19 61 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; 
}