إضافة نص ورمز (مع Mouselistener) إلى عمود JTable
-
19-09-2019 - |
سؤال
أريد أن أقوم بتنفيذ الوظائف التالية لكنني مرتبك إذا كان ذلك ممكنا في جافا. إذا كانت الإجابة بنعم، من كيف؟ الرجاء المساعدة:
أريد إنشاء نوع JTable من الجدول حيث 1st الصف يحتوي الجدول على أسماء الأعمدة وأيقونة في كل عمود أي في كل خلية من الصف الأول. يجب أن يؤدي النقر فوق أيقونة إلى إزالة هذا العمود من الجدول (ممكن باستخدام Mouselistener؟).
لقد وجدت حل كثيرة حيث يمكنني إضافة زر إلى خلية في JTable ولكن لا شيء يصف بإضافة كل من النص والرمز (مع Mouselistener) إلى خلية. يرجى ملاحظة ما إذا كان يمكنك المساعدة، شكرا جزيلا للقراءة.
المحلول
يمكنك إنشاء مخصص TableCellRenderer
هذا يمتد JLabel
. وبعد هذه JLabel
يمكن أن تنشأ مع رمز (JLabel
يمكن عرض الرموز، إلى اليمين أو يسار النص). سوف تريد getTableCellRendererComponent
لاختبار Wether، يتم تقديم الصف الأول أم لا، وإذا كان الأمر كذلك، فقم بتعيين الأيقونات، وإلا لا تفعل ذلك.
للحصول على إجراء الإزالة، يمكنك إضافة MouseListener
على الطاولة، وعند معالجة mouseClicked
الطريقة، يمكنك العثور على الخلية التي تم النقر عليها عن طريق اختبار rowAtPoint
و columnAtPoint
عن طريق إنشاء أ Point
من mouseEvent.getX()
و mouseEvent.getY()
. وبعد إذا حددت الصف الأول مع النقر فوق الرمز، فيمكنك إزالة العمود من طراز العمود.
إذا بقلم 1st الصف, ، تعني فعلا رأس الجدول، يمكنك إنشاء نفس العارض ل JTableHeader
, ، وتعيين MouseListener
على هذا المكون.
نصائح أخرى
حسنا، أنا لا أفهم سؤالك.
أريد إنشاء نوع JTable من الجدول حيث يحتوي الصف الأول من الجدول على أسماء الأعمدة وأيقونة
هل تقصد رأس الجدول، مثل الطريقة التي تعمل بها الفرز عن طريق عرض اسم العمود واتجاه الفرز؟
إذا كان الأمر كذلك، فأنت تستخدم عارض مخصص لرأس الجدول وإضافة Mouselistener إلى الرأس لتحديد العمود الذي تم النقر فوقه. يجب أن تكون قادرا على تخصيص عرض رأس الجدول الافتراضي للقيام بما تريد.
أو هل تقصد الصف الأول من البيانات في الجدول. إذا كان الأمر كذلك، فأنت لا تزال بحاجة إلى استخدام عارض مخصص ولكن هذه المرة تضيف Mouselistener إلى الجدول وليس رأس الجدول.
في كلتا الحالتين، يمكنك استخدام طريقة TableColumnmodel.removecolumn () لإزالة العمود من عرض الجدول.