如何更新TextField

时间:2011-01-28 15:34:42

标签: java field jpanel textfield

我所拥有的是一个相位图,可以通过在文本字段中输入值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();
        ...

        }

我已经尝试过(并且意识到这是相当愚蠢的)只是用NumberField中的1替换我从点击获得的值。但编译器告诉我:

非静态变量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 个答案:

答案 0 :(得分:1)

正在改变x0的方法是静态方法,对吗?所以它不知道x0所在的对象是什么,因为x0是一个实例字段。

您似乎没有显示编译器实际抱怨的代码。

答案 1 :(得分:-1)

如果您使用JTextArea,则不会有任何问题。只需向其添加一个动作侦听器,然后就可以使用

添加文本
textArea.append(String s);