ActionListener على Jlabel أو Jtable Cell
-
21-09-2019 - |
سؤال
لديّ 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 لنقرات الماوس الصحيحة ، نظرًا لأنه لم يتم تغيير التحديد. لذا ، إذا اعتدت على استخدام هذه الطريقة ، فلن تواجه مشاكل في المستقبل.