إظهار جدول الجدول لا يتماشى، ولكن في ترتيب مصفوفة

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

سؤال

انا استعمل ال جدول الجدول لإظهار معلومات في جدول. يمكن للمستخدم تحديد أحد الخيارات المعروض عن طريق تحديد سطر واحد من الجدول.

أريد إنشاء جدول في نموذج مصفوفة، حيث لا يمكن للمستخدم تحديد الخط فحسب. يجب أن يكون من الممكن تحديد كل عنصر من البند من الجدول، مثل Row 2 Column 3. لكل اختيار عنصر يتم استدعاء إجراء للتعامل مع هذا العنصر كما هو الحال في TableViewer.

بقدر ما أنا الآن، يمكنني إضافة CellModifier و Celleditors إلى خط أعمدة الجدول، ولكن مرجع الإجراء هو دائما كائن الخط وليس الجدولية المحددة.

هل لدى شخص ما مثالا حول كيفية إنشاء مثل هذه المصفوفة داخل مركب؟ يمكنني إنشاءه عن طريق تعيين Gridlayout وإضافة المكونات في حلقة للحلقة، ولكن من أحصل على مشكلات، عندما أرغب في إعادة رسم المركب مع أطفال جدد. يحتوي الجدول على هذا التعامل مع هذا التعامل بالفعل، لذلك لا أريد تطبيقه مرة أخرى.

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

المحلول

كان لدي نفس المشكلة منذ فترة واحدة والطريقة الوحيدة التي وجدتها لحلها هي تسجيل مستمع الماوس على القطعة الجدول SWT المرتبطة عارض الجدول.

MouseListener columnSelectionMouseListener = new ColumnSelectionMouseListener();
getViewer().getTable().addMouseListener(columnSelectionMouseListener);

public class ColumnSelectionMouseListener implements MouseListener {

    private TableColumn selectedColumn;

    @Override
    public void mouseDoubleClick(MouseEvent e) {
        // Nothing to do here
    }

    @Override
    public void mouseDown(MouseEvent e) {
        table = (Table) e.widget;
    TableItem item = table.getItem(new Point(e.x, e.y));
    for (int i = 0; i < table.getColumnCount(); i++) {
        TableColumn column = table.getColumn(i);
        Rectangle bounds = item.getBounds(i);
        if (bounds.contains(e.x, e.y)) {
            selectedColumn = column;
        }
    }
    }

    @Override
    public void mouseUp(MouseEvent e) {
        // Nothing to do here
    }

    public TableColumn getSelectedField() {
           return selectedColumn;
    }
}

ثم، على سبيل المثال في مستمع اختيار المشاهد، يمكنك أن تطلب من المستمع الماوس الذي تم تحديد العمود عند الضغط على الماوس ويجمع ذلك مع السطر المحدد من اختيار المشاهد لإجراء الإجراء المناسب.

آمل أن هذا يمكن أن يساعد.

مانو مانو

نصائح أخرى

ربما سيساعد مقتطف JFACE التالي:SNIPPET058CELLNAVIVIEN34.

إنغو

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