にXMLからデータを置くとき、私は、Javaとの個人的なプロジェクトに取り組んでとEclipseの下でスイングしています動作しません。「prepareRendererは、」私は私のcustomJTable
私はセルをレンダリングするためのカスタムのJTableをしました。
public class CustomJTable extends JTable{
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
// change background of rows if [row,13] is even
c.setBackground(getBackground());
if((int)getModel().getValueAt(row, 13) %2 == 0)
c.setBackground(Color.YELLOW);
// change font, border e background of cells if a string field is equal to some predeterminated value
Font myFont = new Font(TOOL_TIP_TEXT_KEY, Font.ITALIC | Font.BOLD, 12);
c.setForeground(getForeground());
if (getModel().getValueAt(row, column)=="VALUE"){
((JComponent) c).setBorder(new MatteBorder(1, 1, 1, 1, Color.RED)); //needs cast for using setBorder
c.setFont(myFont);
c.setForeground(Color.RED);
c.setBackground(new Color(255, 230, 230));
}
//set disabled cells appearance
if (getModel().getValueAt(row, column)=="DISABLED"){
((JComponent) c).setBorder(new MatteBorder(1, 1, 1, 1, Color.GRAY));
c.setForeground(Color.LIGHT_GRAY);
c.setBackground(Color.LIGHT_GRAY);
}
return c;
}
私CustomJTableはオーバーライドメソッドを持つクラスのベクトルを含むカスタムのTableModel(AbstractTableModelにを拡張)からの値をとります。
私はこのmyModel.getVector().add(element)
ようなもので、ベクターに要素を追加した場合、私は何の問題もありません。 myTable.updateUI()
と入力すると、Rowが自動的にCustomJtableに追加され、正しく表示されます。すべてが完璧です!!!私は私が前に保存された外部.XMLから行を追加しようとする
問題がoccure。 JTableに追加したデータは正しく、黄色の行の背景も変更されていますが、セルはレンダリングされません(セルの境界ではなく、フォントの変更ではなくREDセルの背景)。
私はすべてを試しました。 validate()
、repaint()
、fireTableCellChanged()
... エラーが見つかりません。誰でも助けてくれますか?
OMG、ありがとう。 私は長年Javaに戻ってきましたが、ビューインデックスとモデルインデックスの違いはありませんでした。それが問題でした! –