を無視しますDefaultTableModel
のほぼコピー(プライベートフィールドへのアクセスが必要)。数週間前にすべてうまくいっていた。表createCellは私が更新を起動する前に、私のアプリをテストしていたと私は私は本当に理解していない何かを発見した1列
オーバーライドされたメソッドcreateCell
では、現在の2番目の列は無視されます。メソッドの最初に値、行および列を表示するログを入れました。列1は列タイトルを作成するときにのみこれをトリガーします。他のすべての列はログをトリガーしますが、列1はトリガーしません。
この現象を引き起こす可能性のあるアイデアはありますか?
ありがとうございます。
編集:ここでオーバーライドcreateCellコードです:ここで
@Override
protected Component createCell(Object value, int row, int column, boolean editable) {
Component cell;
Log.p("Table CreateCell "+ row + " " + column + " " + value + " " + editable);
if(editable && (column == 1 || column == 2 || column == 3) && row != -1)
{
//Table is editable
Component TA = new TextArea(value.toString());
TA.setUIID(CerebroMobileTheme.LABEL);
((TextArea)TA).setEditable(DocFormLineTable.this.editable);
TA.setEnabled(DocFormLineTable.this.editable);
if(column == 1) //Quantity cells
((TextArea)TA).setHint("Qtty");
if(column == 2) //Description cells
((TextArea)TA).setHint("Description");
if(column == 3)
{
//Third columns cells are confirm buttons
TA = new Button("");
TA.setUIID("BlueButton");
FontImage.setMaterialIcon((Button)TA, FontImage.MATERIAL_CHECK);
((Button)TA).addActionListener(e-> {
//Similar code is used at the closing of the form to save data
//DocFormLine is a line of data for our document
DocFormLine dfl = (DocFormLine)value;
dfl.setDescription(((TextArea)((TableLayout)this.getLayout()).getComponentAt(row+1, 2)).getText());
dfl.setQtty(Double.parseDouble(((TextArea)((TableLayout)this.getLayout()).getComponentAt(row+1, 1)).getText()));
//Call our rest service to save the data serverside
RestManager.saveDocFormLine(dfl);
});
}
cell = TA;
}
else
{
//If non editable or title or first columns(non editable field), cell set to a SpanLabel
cell = new SpanLabel((String)value);
cell.setUIID("label");
if(column == 3)
cell = new Label("");
}
}
は、ログ表の作成から結果である:
[EDT] 0:0:21,387 - Table CreateCell -1 0 Produit false
[EDT] 0:0:21,388 - Table CreateCell -1 1 Qtty false
[EDT] 0:0:21,388 - Table CreateCell -1 2 Utilisation false
[EDT] 0:0:21,388 - Table CreateCell -1 3 false
[EDT] 0:0:21,388 - Table CreateCell 0 0 Main d'oeuvre et déplacements true
[EDT] 0:0:21,388 - Table CreateCell 0 2 true
[EDT] 0:0:21,388 - Table CreateCell 0 3 ***[email protected] true
[EDT] 0:0:21,391 - Table CreateCell 1 0 Main d'oeuvre et déplacements true
[EDT] 0:0:21,391 - Table CreateCell 1 2 true
[EDT] 0:0:21,391 - Table CreateCell 1 3 ***[email protected] true
ログの助けを借りて私は、列1が列タイトルを作成するときにのみcreateCellメソッドをトリガすることを確認しました。
を私はあなたがこの特定のセルのためにそれを設定した後UIIDが変更された –
問題は、テーブルをテーマ設定については、実際にはない推測していますQuitセルは 'Textfield'ではなくヌルになっています。これらのセルに対してcreateCellはまったく呼び出されません。それは私が理解できないものです。 –