「ステップ」のリストから JTable を動的に埋めています。ある種の「開始」ステップは、複数のアクションを含む可能性があるため、他のステップとは異なりますが、他のすべてのステップ タイプには 1 つのアクションのみが含まれます。そのため、「オープン」タイプのステップに到達したときに、次のようにすべてのアクションを同じテーブルに未加工で追加したいと思います。
step name Action on Object value result
opening full open door1 30 ... delete replace
haulgh open door2 40 delete replace
wholeOpen door1 10 delete replace
comparison compare state1 .. ...
ここで、'delete' と 'replace' は JButton の拡張です。私が書いたコードは次のとおりです。
public DefaultTableModel ListToTableModel(Object[] l, String tableName) throws Exception {
Vector<String> columnNames = null;
Vector<Vector<Object>> data = new Vector<>();
columnNames = new Vector<>(Arrays.asList(" Step name: "," Action: "," On object: "," Action value: "," Action result: "," "," "));
for (int i = 0; i < l.length; i++) {
for(int j=0;j<((Step) l[i]).action.size();j++){
Vector<Object> vector = new Vector<>();
String string="";int k=0;
if(((Step) l[i]).Name=="opening"){
vector.add(((Step) l[i]).Name);
for(k=0;k<((Step) l[i]).action.size();k++){
string+=((Step) l[i]).action.get(k)+"\n";
}
vector.add(string);
string="";
for( k=0;k<((Step) l[i]).onObject.size();k++){
string+=((Step) l[i]).onObject.get(k)+"\n";
}
vector.add(string);
string="";
for(k=0;k<((Step) l[i]).value.size();k++){
string+=((Step) l[i]).value.get(k)+"\n";
}
vector.add(string);
string="";
for( k=0;k<((Step) l[i]).result.size();k++){
string+=((Step) l[i]).result.get(k)+"\n";
}
vector.add(string);
break;
}
else
{
vector.add(((Step) l[i]).Name);
vector.add(((Step) l[i]).action.get(j));
vector.add(((Step) l[i]).onObject.get(j));
vector.add(((Step) l[i]).value.get(j));
vector.add(((Step) l[i]).result.get(j));
vector.add("delete");
vector.add("Replace");
}
data.add(vector);
}
}
return new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int rowIndex, int mColIndex) {
return true;
}
};
}
ステップクラスは次のとおりです。
public class Step {
public String Name=null;
public List<String> action=null;
public List<String> onObject=null;
public List<String> value=null;
public List<String> result=null;
public Step(String n){
Name=n;
action=new ArrayList<String>();
onObject=new ArrayList<String>();
value=new ArrayList<String>();
result=new ArrayList<String>();
}
public void add(String act,String onobject ,String val,String res){
action.add(act);
onObject.add(onobject);
value.add(val);
result.add(res);
}
しかし、呼び出したときに得られる唯一の結果:
Step step=new Step("opening");
step.add("full open","door1","30.0","door_1");
step.add("haulgh open","door2","40.0","door_2");
step.add("whole open","door3","40.0","door_3");
Controller.getStepList().add(step);
step=new Step("comparison");
step.add("compare","state1","--","state_1");
Controller.getStepList().add(step);
は:
step name Action on Object value result
comparison compare state1 -- state_1
何が悪いのか考えている人はいますか?
少し早いですがお礼を!