我所擁有的是一個相位圖,並且可以通過在文本字段中輸入值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)),
...
那就是當它投訴
添加文本那將是非常有益的,如果你提供了包含所需要重現該問題的所有必要的線條簡單的小例子。 – 2011-10-21 15:58:29