لماذا Table.getItem (نقطة) دائما العودة العنصر من العمود الصفر؟

StackOverflow https://stackoverflow.com/questions/362336

  •  21-08-2019
  •  | 
  •  

سؤال

ولقد نفذت فئة أن تعطيني tooptip أكثر مرونة بالنسبة للطبقة org.eclipse.swt.widgets.Table. وأنا متأكد من تعلمون جميعا، افتراضيا تحصل تلميح أداة واحدة للجدول كله - وليس النصائح الفردية لكل خلية

وجوه بلدي يخلق عدد من المستمعين لتنفيذ موقعه الخاص تلميح أداة حساسة، ولكن عندما أدعو Table.getItem (نقطة) للحصول على TableItem (أو خلايا) التي يكون للفأرة يحوم دائما إرجاع خلية من العمود 0 من الصف الصحيح.

ويتم إنشاء الجدول في السؤال من قبل TableViewer مع هذه التعويذة ...

viewer = new TableViewer( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION );

وحيثما أنا ذاهب خطأ؟

هل كانت مفيدة؟

المحلول

والجواب، في النهاية هو أن TableItem يمثل صف واحد، وليس خلية ضمن صف واحد. وهذه الطريقة سوف يذكر جلب عدد الأعمدة لك ...

/**
 * Get the column from the given TableItem and Point objects 
 * @param pt
 * @param item
 * @return -1 if no column is found
 */
public static int getColumn( Point pt, TableItem item )
{
    int columns = item.getParent().getColumnCount();
    for (int i=0; i<columns; i++)
    {
        Rectangle rect = item.getBounds (i);
        if ( pt.x >= rect.x && pt.x < rect.x + rect.width ) return i;
    }
    return -1;
}

وNB: Rectangle.intersects (نقطة) يمكن أن تفشل إذا كنت تحوم بالضبط على حواف الطاولة، حتى لقد استعملت مقارنة X بسيطة بدلا من ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top