Re: [問題] JTable的排序與上色
※ 引述《sbrhsieh (十年一夢)》之銘言:
: ※ 引述《prjryu (再努力一點)》之銘言:
: : 下面綠色的部份是我所說改變的地方,對table而言我insert的row仍然是obj陣列,
: : 但我不懂是否是您所說的需要跟著改default cell renderer的情況。
: : 如果需要更動的話應該如何更動呢?
: : 我的default cell renderer會去取table裡cell的值計算判斷是否染色,
: : 現在遇到的問題是,
: : 那個被我以double形態轉成obj型態insert入table的cell不會染色
: : 這種cell重畫的時候沒有call到我所set的DefaultRenderer...orz
: : strData = BufferedStream.readLine();
: : StringTokenizer st = new StringTokenizer(strData, "\t");
: : st = new StringTokenizer(strData, "\t");
: : tokens = new Object[15];
: : for( i=0, j=st.countTokens(); i < j; i++)
: : {
: : jLabel1.setText("token: "+j);
: : if( i > 2 )
: : {
: : //放<double>後table才能正確排序,但DefaultTableCellRenderer無法正確上色
: : tokens[i] = Double.parseDouble( st.nextToken() );
: : //原:tokens[i] = st.nextToken();//放<obj>後table才能正確上色,但無法正確排序
: : }
: : else
: : {
: : tokens[i] = st.nextToken();
: : }
: : }
: : defaultTableModel.addRow(tokens);
: 你得提供你的 table cell renderer 的碼才有助找出問題點。
: 你把 model 內的數據從 string 改成 double,那麼你在 table cell renderer
: 判斷要不要標記的作法一定會受影響,你也要一併改寫,目前就是沒有這部分的
: 資訊。
: 如果你的 JTable 應用很複雜,建議你可以考慮使用 SwingX 之類的套件或許會
: 輕鬆一點。
感謝sbrhsieh大的回覆
在此附上我的 table cell renderer 的碼
public class MainWindow extends javax.swing.JFrame
{ ...
public static double[] dbLow = new double[11];
public static double[] dbHeigh = new double[11];
...
jTable.setDefaultRenderer(Object.class,new ColorTable());
...
}
class ColorTable extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(JTable table,Object
value,boolean isSelected,boolean hasFocus,int row,int col)
{
super.getTableCellRendererComponent(table,value,isSelected,hasFocus,
row,col);
Color foreground, background;
double dbValue = 0;
dbValue = Double.parseDouble( MainWindow.jTable.getValueAt( row,
col).toString());
if( dbValue < MainWindow.dbLow[col] || dbValue > MainWindow.dbHeigh[col] )
{
foreground = Color.WHITE;
background = Color.RED;
}
else
{
foreground = Color.BLACK;
background = Color.GRAY;
}
setForeground(foreground);
setBackground(background);
//System.out.println( "COLOR cell: " + row + ", " + col );
return this;
}
}
不確定問題是否在這邊,因為我的認知是table開到哪cell就會畫到哪才對...
所以在這邊我有試著印出有被我改顏色的cell的row和column號,
有發現JTable裡被我塞double的obj cell沒有印位置出來
(正常來說是要通通會印出來才對)
--
郵差又來送羊奶了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.192.238
※ 編輯: prjryu 來自: 60.250.192.238 (10/18 09:33)
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章