إزالة الخلايا الحدود في jtable
-
02-10-2019 - |
سؤال
لديّ عارض الخلية المخصص وأريد إزالة حدود الخلية.
كيف يمكنني فعل ذلك؟ حاولت setborder لكنها لا تعمل.
هنا رمز العارض الخاص بي:
public class MyTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = -1195682136616306875L;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
if (!isSelected) {
if (row % 2 == 0 && row != 1) {
c.setBackground(new Color(255, 255, 150));
} else {
c.setBackground(Color.WHITE);
}
} else {
c.setBackground(new Color(255, 230, 255));
}
c.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
return c;
}
}
المحلول
الخطوط المرسومة بين الخلايا ليست جزءًا من الخلايا نفسها. يتم رسمها بواسطة الجدول. يمكنك إيقاف تشغيلها من أجل الجدول بأكمله مع:
table.setShowGrid(false);
لتعطيل فقط الخطوط الأفقية أو مجرد الخطوط العمودية:
table.setShowHorizontalLines(false);
table.setShowVerticalLines(false);
أو يمكنك تغيير لون الخطوط مع:
table.setGridColor(color)
نصائح أخرى
لا أعرف كيف يجمع الكود الخاص بك لأن مكونات التأرجح فقط يمكن أن تحتوي على حدود ولا تحتوي فئة المكون على طريقة setBorder ().
عندما أتجاوز العارض الافتراضي ، أستخدم شيئًا مثل:
Class CustomRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
this.setBorder (BorderFactory.createBevelBorder (EtchedBorder.RAISED));
return this;
}
}
لا تنتمي إلى StackOverflow