java - Java Swing 中的动画线条

标签 java swing animation amazon-ec2

我目前正在编写用于创建监控工具的代码,该工具监控 Amazon Web Services 和 Amazon Cloud,并可视化我当前运行的云基础设施。

例如,如果 CPU 利用率或网络 I/O 增加了一些阈值,而不是自动缩放被调用,并且 EC2 的新实例被添加到系统,这段代码运行完美,但现在我正在可视化这个东西显示此 Activity 的工具的 GUI。我正在使用 Java Swing 创建监控工具。

我需要的主要帮助如下:

我在框架顶部可视化客户端,在客户端下方可视化 EC2 实例,只是为了显示客户端和服务器之间的逻辑连接,我在客户端和 EC2 实例之间画线。

现在我需要对这些线进行动画处理 - 也许一条缓慢移动的描边线只是为了表明客户端和 EC2 实例之间存在一些流量,我还希望动画的速度或线条中的描边移动随着流量的增加而增加增加。(可能是设置动画速度的变量)。

我需要有关如何在 Java Swings 中实现此类动画线条的帮助。非常感谢任何帮助。

最佳答案

这是一个从零开始完全绘制和动画移动虚线的小例子:

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 组件。因此它将检测它们的边界并绘制连接线...

关于java - Java Swing 中的动画线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126590/

相关文章:

javascript - Java:Javascript 函数不会在 Wicket 按钮的 onclick 事件上触发

java - 在 Couchbase 中调用删除文档(带分页)时的 Spring Data "TimeoutException"

java - 从低通滤波转换

ios - SwiftUI 动画打破屏幕旋转

Jquery - 是否可以向 AJAX 加载的内容添加动画

java - java中使用迭代器?

java - 使用javaBeans Persistence机制保存和加载java GUI

java - 将图标插入Java Swing JFrame

java - 在java中限制应用程序的多个实例

jquery - CSS 动画一次一行