То, что у меня есть, это фазовый график, и новую траекторию можно нарисовать, введя значения x0 и y0 в текстовое поле. Но я сделал возможным изменить x0 и y0, нажав на график, проблема в том, что новые x0 и y0 не записываются в текстовое поле, что я и пытаюсь сделать, что Мне не повезло, поэтому я обращаюсь к людям, которые знают это лучше, чем я.
Существует так много кода, размещать все это было бы довольно утомительно. Для меня и для вас, чтобы прочитать все это.
Итак, у меня есть этот код:
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();
...
}
Я пытался (и понял, что это было довольно глупо) просто заменить 1 внутри NumberField значением, которое я получаю от клика. Но компилятор тогда говорит мне:
на нестатическую переменную x0 нельзя ссылаться из статического контекста
Помогите мне, пожалуйста!
Жалуется, когда я пытаюсь это:
Это код, который определяет 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)),
...
и вот когда он жалуется