【发布时间】: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