私は位相プロットを使用しており、テキストフィールドの値x0とy0の入力から新しい軌道を描くことができます。しかし、プロットをクリックしてx0とy0を変更できるようにしました。問題は、新しいx0とy0がテキストフィールドに書き込まれていないということです。私は運がなかったので、私はこれよりもよく知っている人に向いています。TextFieldを更新するには
非常に多くのコードがあり、投稿するのはむしろ面倒です。私とあなたのためにそれをすべて読むこと。
だから私はこのコードを持っている:
ここpublic static class NumberField extends Field {
protected NumberFormat numberFormat;
protected Number min;
protected Number max;
protected Number defValue;
protected boolean strictMin;
protected boolean strictMax;
//Here follows some constructors, don't know if I need to post them here
問題
protected enum OptionField {
...
X(new NumberField("x₀", 1., 0., true)),
Y(new NumberField("y₀", 1., 0., true)),
...
final public NumberField field;
OptionField(NumberField f){field = f;}
}
もが発生する:私が試した(OptionPanelがJPanelのある)
public void actionPerformed(ActionEvent e) {
Parameters p = new Parameters();
p.plotType = e.getActionCommand();
...
p.x0 = optionPanel.getNumber(OptionField.X.name()).doubleValue();
p.y0 = optionPanel.getNumber(OptionField.Y.name()).doubleValue();
...
}
(と私がクリックから得た値でNumberFieldの中の1を置き換えるだけで、それはむしろばかげたことに気づいた)。しかし、コンパイラは、私に語った:
非静的変数x0は
が私を助けてください静的コンテキストから参照することはできません!
私はこれをしようとすると、それは文句:
これは、私は私がいない持っているこのCOSをやろうX0
private class Parameters {
String plotType;
String method;
double c, s, a, b, t1, h0, h1, xFP, yFP, xB, yB, al;
double x0 = 1.;
double y0 = 1.;
と
plot.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(param.plotType == "PHASE_PLOT"){
param.x0 = (((double) e.getX()-45)/680)*param.xB;
param.y0 = -(((double) e.getY()-550)/510)*param.yB;
を定義するコードです何をすべきか
protected enum OptionField {
...
X(new NumberField("x₀", param.x0, 0., true)),
Y(new NumberField("y₀", param.y0, 0., true)),
...
とそれが文句を言うときそれは
というテキストを追加できます。問題を再現するのに必要なすべての必要な行が含まれている簡単な例を提供していれば非常に便利です。 –