سؤال

أريد أن أقوم بتنفيذ الوظائف التالية لكنني مرتبك إذا كان ذلك ممكنا في جافا. إذا كانت الإجابة بنعم، من كيف؟ الرجاء المساعدة:

أريد إنشاء نوع 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 () لإزالة العمود من عرض الجدول.

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