【问题标题】:How to update a TextField如何更新文本字段
【发布时间】:2011-01-28 15:34:41
【问题描述】:

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

那就是它抱怨的时候

【问题讨论】:

  • 如果您提供了一个简单的简短示例,其中包含重现问题所需的所有必要行,那将会非常有用。

标签: java field jpanel textfield


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果你使用 JTextArea,你不会有任何问题。只需为其添加一个动作侦听器,然后您可以添加文本与

    textArea.append(String s);
    

    【讨论】:

    • 感谢您提供帮助 :-) 不幸的是,您的答案有点混乱。 a) JTextArea 有一个 append(String) 方法,但没有注册 actionListeners 的 api b) JTextField 可以有 actionListeners 但没有方法 append(String)。
    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多