我一直在用java编写程序,所以我决定使用Swing作为我的GUI。我没有很多关于swing的经验,所以我不确定它如何管理我发送给它的对象。
我的程序包含一个需要定期更新的图表(可能每秒10次),使用以下代码在JPanel中绘制:
private JFrame graphWindow = new JFrame("Graph");
graph = new JPanel()
{
protected void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
// Draw the graph and labels in g2
}
}
graphWindow.add(graph, BorderLayout.CENTER);
graphWindow.pack();
graphWindow.setSize(windowDimensions);
graphWindow.setVisible(true);
现在我拥有它以便图表显示一次,但我不知道如何告诉它刷新。我知道如何编写随时间运行的循环,但我不知道如何在循环中刷新图形。
我感谢你能给我的任何帮助。
答案 0 :(得分:3)
你看过Javadocs吗?
来自java.awt.Component.repaint()
:
重新绘制此组件。
如果此组件是轻量级组件,则此方法会尽快调用此组件的paint方法。否则,此方法会尽快调用此组件的更新方法。
注意:有关AWT和Swing使用的绘制机制的更多信息,包括如何编写最有效的绘制代码的信息,请参阅AWT和Swing绘画。
<强>时间:强>
JDK1.0
这可以与Swing计时器一起使用,以定期重新绘制/“刷新”图形。
示例:的
import javax.swing.Timer;
/// ...
final JPanel graph = new JPanel() {
protected void paintComponent(Graphics g) {
// ... your painting code ...
}
}
// The following Timer repeats 10 times per second (100 millisecond delay):
Timer timer = new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
graph.repaint();
}
});