سؤال

لديّ jtable مع JLabel[][] كبيانات. الآن أريد اكتشاف نقر مزدوج على JLabel أو خلية جدول (ولكن فقط في أحد الأعمدة). كيف يمكنني إضافة إجراء/mouselistener على خلية جدول JLabel على التوالي؟

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

المحلول

ماذا عن:

table.addMouseListener(new MouseAdapter() {
  public void mouseClicked(MouseEvent e) {
    if (e.getClickCount() == 2) {
      JTable target = (JTable)e.getSource();
      int row = target.getSelectedRow();
      int column = target.getSelectedColumn();
      // do some action if appropriate column
    }
  }
});

نصائح أخرى

في الأساس نفس الاقتراح الذي تم قبوله بالفعل باستثناء:

أ) يجب أن تتعامل مع المسيرة ، وليس mouseclicked. لا يتم إطلاق حدث مقلوب إلا عندما يتم إنشاء حدث مصبوب من موسى وموسى في نفس موقع البيكسل. أنت إذا قام المستخدم بتحريك الماوس حتى 1 بكسل أثناء النقر المزدوج ، فلن تحصل على النقر المزدوج المتوقع.

ب) قد ترغب أيضًا في التفكير في استخدام أساليب ColumnatPoint () و RowatPoint () للحصول على الخلية التي تم النقر عليها. على الرغم من أنه ربما لا يحدث فرقًا في هذه الحالة ، إلا أنه من المهم إذا حاولت استخدام Mouselistener لنقرات الماوس الصحيحة ، نظرًا لأنه لم يتم تغيير التحديد. لذا ، إذا اعتدت على استخدام هذه الطريقة ، فلن تواجه مشاكل في المستقبل.

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