我目前正在编写代码,用于创建一个监控工具,用于监控Amazon Web Services和Amazon Cloud,并可视化我当前运行的云基础架构。
例如,如果CPU利用率或网络I/O增加了某个阈值,而不是调用自动缩放,并且向系统添加了一个新的EC2实例,则此代码运行得很好,但现在我可以在显示此活动的工具的图形用户界面上可视化此操作。我正在使用Java Swing创建监控工具。
我需要的主要帮助如下:
我在框架的顶部可视化客户端,在客户端下面可视化EC2实例,只是为了显示客户端和服务器之间的逻辑连接,我在客户端和EC2实例之间画了一条线。
现在我需要对这些线条进行动画处理--也许一条线条移动缓慢,只是为了显示客户端和EC2实例之间有一些流量,我还想让线条中的动画或笔划移动的速度随着流量的增加而增加。(可能是设置动画速度的一个变量)。
我需要关于如何在Java Swings中实现这样的动画线条的帮助。任何帮助都是非常感谢的。
发布于 2012-04-12 23:38:37
这是一个移动虚线的小例子,从零开始完全绘制和动画:
private static int speed = 5;
public static void main ( String[] args )
{
JFrame frame = new JFrame ();
frame.setLayout ( new BorderLayout () );
frame.add ( new JComponent ()
{
private int diff = 0;
{
final Timer timer = new Timer ( 1000 / ( 10 * speed ), null );
timer.addActionListener ( new ActionListener ()
{
public void actionPerformed ( ActionEvent e )
{
if ( diff < 20 )
{
diff++;
}
else
{
diff = 0;
}
repaint ();
timer.setDelay ( 1000 / ( 10 * speed ) );
}
} );
timer.start ();
}
protected void paintComponent ( Graphics g )
{
Graphics2D g2d = ( Graphics2D ) g;
g2d.setRenderingHint ( RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON );
g2d.setStroke (
new BasicStroke ( 5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1f,
new float[]{ 10f, 10f }, diff ) );
g2d.setPaint ( Color.BLACK );
g2d.drawLine ( 0, getHeight () / 2, getWidth (), getHeight () / 2 );
}
} );
frame.add ( new JSlider ( JSlider.HORIZONTAL, 1, 10, speed )
{
{
addChangeListener ( new ChangeListener ()
{
public void stateChanged ( ChangeEvent e )
{
speed = getValue ();
}
} );
}
}, BorderLayout.SOUTH );
frame.setSize ( 500, 500 );
frame.setLocationRelativeTo ( null );
frame.setVisible ( true );
}基本上,对于动画,您将需要绘制大多数您想要动画的东西。在你的例子中,如果它是用虚线连接的两个对象-你可以使用容器来绘制这个连接,并只在其上放置简单的Swing组件。因此它将检测它们的边界并绘制连接线。
发布于 2012-04-13 04:08:49
发布于 2012-04-12 23:38:46
使用JPanel并覆盖其paintComponent() method.This方法将负责动画。
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(x1,y1,x2, y2);
}当required.In你的情况时,再次增加x2,当服务器处理新的连接时,需要增加x2。希望这能对你有所帮助。
https://stackoverflow.com/questions/10126590
复制相似问题