我所拥有的是一个相位图,可以通过在文本字段中输入值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 :(得分:1)
正在改变x0的方法是静态方法,对吗?所以它不知道x0所在的对象是什么,因为x0是一个实例字段。
您似乎没有显示编译器实际抱怨的代码。
答案 1 :(得分:-1)
如果您使用JTextArea,则不会有任何问题。只需向其添加一个动作侦听器,然后就可以使用
添加文本textArea.append(String s);