gpt4 book ai didi

java - java中带定时器的图形绘图仪

转载 作者:行者123 更新时间:2023-12-01 11:52:20 26 4
gpt4 key购买 nike

我正在开发一个绘图器,它从用户那里获取像 x^2 + t 这样的表达式,然后询问用户 x 和 t 的范围。这里的t是定时器变量。因此,在 x^2 + t 中,用户将为 x 选择 -10 到 10,为 t 选择 1 到 5。现在,通过单击 GUI 程序中的绘制按钮,代码将从最小 t(此处为 1)开始绘制表达式,并且在每一秒(或任何时间段)后将 t 值增加一并使用新的 t(2 ,3 直到达到最大范围)。如何让事件处理程序执行此操作?我找到了一种绘制多个图表的方法,但我无法进行延迟,因此最小到最大。我知道我应该使用计时器,但我不知道如何在这部分代码中使用

Link整个代码

这是绘图器类中应该更改的代码部分:

// Grapher
drawButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

try {

String testSpring = null;
String tVarString = null;

for (int i = 0; i < 5; i++) {

testSpring = inputExpression;
tVarString = String.valueOf(i);
testSpring = testSpring.replaceAll("t", tVarString);

Equation equation = new Equation(testSpring);

graph.addEquation(equation);

}
}

catch (EquationSyntaxException e) {

e.printStackTrace();
}

}
});

这是程序的图片:

enter image description here

我的首要任务是只需单击绘图按钮即可运行程序不过这个定时器如果能影响JSlider就更好了因此 t 的最小值和最大值将是 Jslider 的最小值和最大值,并且通过单击“绘制”,每次 slider 旋钮指向 t 的值时,它将开始绘制

最佳答案

看看How to use Swing Timers

这将允许您定期设置回调,该回调在 EDT 上下文中执行,从而可以安全地从内部更新 UI

    public void actionPerformed(ActionEvent arg0) {

Timer timer = new Timer(1000, new ActionListener() {
private int iteration;
@Override
public void adtionPerformed(ActionEvent evt) {

try {

String testSpring = null;
String tVarString = null;

testSpring = inputExpression;
tVarString = String.valueOf(iteration);
testSpring = testSpring.replaceAll("t", tVarString);

Equation equation = new Equation(testSpring);

graph.addEquation(equation);

} catch (EquationSyntaxException e) {
e.printStackTrace();
} finally {
iteration++
if (iteration > 4) {
((Timer)evt.getSource()).stop();
}
}
}
});
timer.start();

}
});

关于java - java中带定时器的图形绘图仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28705945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com