これが問題です.Webサイトのいくつかのチャートにいくつかの線を引きたいと思います。これらのチャートには、1 本または 2 本の線が含まれる場合もありますが、それぞれが任意の数学関数によって定義されている場合は、さらに数本の線が含まれることもあります。
今のところ、たとえば3本の線を描く可能性しか知りません。
public class ArbitraryFunctionData {
private double x1;
private double x2;
private double x3;
private double y;
public ArbitraryFunctionData(double x1, doouble x2, double x3, double y) {
this.x1 = x1;
this.x2 = x2;
this.x3 = x3;
this.y = y;
}
public double getX1() {
return x1;
}
public double getX2() {
return x2;
}
public double getX3() {
return x3;
}
public double getY() {
return y;
}
public void setX1(double x1) {
this.x1 = x1;
}
public void setX2(double x2) {
this.x2 = x2;
}
public void setX3(double x3) {
this.x3 = x3;
}
public void setY(double y) {
this.y = y;
}
}
どこかでこのインターフェースを定義する必要があります:
public interface ArbitraryFunctionAccess extends
PropertyAccess<ArbitraryFunctionData> {
ValueProvider<ArbitraryFunctionData, Double> x1();
ValueProvider<ArbitraryFunctionData, Double> x2();
ValueProvider<ArbitraryFunctionData, Double> x3();
@Path("x")
ModelKeyProvider<ArbitraryFunctionData> xKey();
}
したがって、これらのアクセス関数をフィールドとしてチャートに追加できます。
horizontalAxis.addField(arbFuncAccess.x1());
horizontalAxis.addField(arbFuncAccess.x2());
horizontalAxis.addField(arbFuncAccess.x3());
これは、チャートを作成するための非常に不快な方法です。これを行うより良い方法はありますか?
ArbitraryFunctionData
事前に定義する必要があり、すべてのアクセス方法を手動で追加する必要があります。私はむしろそのようなことをしたい:
ArbitraryFunction f1 = new ArbitraryFunction(0, 5, 0, 5) {
@Override
public double f(double x) {
return x+1;
}
};
ArbitraryFunction f2 = new ArbitraryFunction(0, 5, 0, 5) {
@Override
public double f(double x) {
return x+2;
}
};
store.add(0, f1.getData()); // a line
store.add(1, f2.getData()); // another line
ArbitraryFunctions 関数public double f(double x)
は上書きする必要があり、ArbitraryFunction.getData()
として定義されていpublic List<ArbitraryFunctionData> getData()
ます。これにより、全体がより動的になりますが、問題は、フィールドを で事前に定義する必要があるため、チャートにフィールドを追加できないことpublic interface ArbitraryFunctionAccess
です。
私の必要性を適切に説明したことを願っています。誰もこれに対する可能な解決策を知っていますか?