Как обновить TextField - PullRequest
       22

Как обновить TextField

0 голосов
/ 28 января 2011

То, что у меня есть, это фазовый график, и новую траекторию можно нарисовать, введя значения 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)),
   ...

и вот когда он жалуется

Ответы [ 2 ]

1 голос
/ 29 января 2011

метод, который изменяет х0, является статическим методом, правильно?Таким образом, он не знает, в каком объекте находится x0, поскольку x0 является полем экземпляра.

Похоже, вы не показываете код, на который фактически жалуется компилятор.

0 голосов
/ 15 августа 2012

Если вы используете JTextArea, у вас не возникнет никаких проблем.Просто добавьте слушатель действия к нему, затем вы можете добавить текст с помощью

textArea.append(String s);
...