JAVA- הדגשת שורה ב-JTabel

liron50

New member
JAVA- הדגשת שורה ב-JTabel

אני משתמש ב-JTabel ו-AbstractTableModel כדי להראות נתונים מבסיס נתונים.
בשלב הראשון ממשתי את המחלקות, לא רשמתי שום פונקציונליות מיוחדת ובמצב הזה כשהקלקתי על תא בטבלה כל השורה הודגשה.
לאחר מכן הוספתי פונקציונליות שבמקרים מסוימים ממלאת צבע בתאים, באמצעות הפונקציות prepareRenderer ו-isCellSelected
ובמקרה זה כשאני לוחץ על תא רק התא מסומן. (צירפתי תמונה שמראה את ההבדלים).

מישהו המליץ לי לנסות את הפונקציות:
setCellSelectionEnabled
setRowSelectionAllowed
ניסיתי להשתמש בהן עם כל השילובים האפשריים (FALSE/FALSE, FALSE/TRUE,. ..וכו) וזה לא עוזר.

למישהו יש מושג למה זה קורה? ואיך אפשר, בלי הרבה קוד, להדגיש את כל השורה?



import java.awt.*;
import java.util.ArrayList;

import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

public class BaseAbstractTable extends JTable
{
private BaseAbstractTableModel baseTableModel;
private ArrayList<Boolean> fillRow_Arr;

public BaseAbstractTable(BaseAbstractTableModel p_tableModel, ArrayList<Boolean> p_fillRow_Arr)
{
super(p_tableModel);
baseTableModel=p_tableModel;
fillRow_Arr=p_fillRow_Arr;


//setCellSelectionEnabled(false);
//setRowSelectionAllowed(true);
}

public Component prepareRenderer(TableCellRenderer renderer,int row, int col)
{
Component comp = super.prepareRenderer(renderer, row, col);
if(baseTableModel.getRowElement_Map().get(row)==null)
{
comp.setBackground(Color.LIGHT_GRAY);
comp.setForeground(Color.BLUE);
comp.setFont(new Font("HELVETICA", Font.BOLD, 16));
}
else if(fillRow_Arr!=null && !fillRow_Arr.get(row))
{
comp.setBackground(Color.ORANGE);
}
else
comp.setBackground(Color.WHITE);

return comp;
}

public boolean isCellSelected(int row, int col)
{
return true;
}
}
 
למעלה