2011-01-28 94 views
-1

我所擁有的是一個相位圖,並且可以通過在文本字段中輸入值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)), 
    ... 

那就是當它投訴

+0

添加文本那將是非常有益的,如果你提供了包含所需要重現該問題的所有必要的線條簡單的小例子。 – 2011-10-21 15:58:29

回答

1

改變x0的方法是靜態方法,是否正確?所以它不知道x0所處的對象是什麼,因爲x0是一個實例字段。

它沒有出現你顯示實際上編譯器抱怨的代碼。

-1

如果使用JTextArea,則不會有任何問題。只需添加一個動作監聽到它,那麼你就可以

textArea.append(String s); 
+0

感謝您嘗試提供幫助:-)不幸的是,您的答案有點混亂。 a)JTextArea有一個append(String)方法,但沒有api來註冊actionListeners b)JTextField可以有actionListeners但沒有方法append(String)。 – kleopatra 2012-08-15 13:42:58