最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)帶GUI的氣泡詩詞效果

 更新時間:2022年12月21日 08:58:03   作者:天人合一peng  
這篇文章主要為大家介紹了如何利用Java實現(xiàn)帶GUI的氣泡詩詞效果,文中的示例代碼講解詳細,對我們學習Java有一定幫助,感興趣的可以了解一下

之前已經(jīng)為大家介紹過利用Java實現(xiàn)帶GUI的氣泡詩詞特效,本文將為大家介紹另一種方法同樣也可以實現(xiàn)氣泡詩詞的效果。下面是示例代碼

import java.awt.*;
import java.awt.event.*;
 
public class AlgoVisualizer {
    private Object data;
    private Circle[] circles;
    private AlgoFrame frame;
    private boolean isAnmiated = true;
 
    String SuShi_Poem = "夜飲東坡醒復醉,歸來仿佛三更。" +
            "家童鼻息已雷鳴。敲門都不應,倚杖聽江聲。\n" +
            "\n" +
            "長恨此身非我有,何時忘卻營營。" +
            "夜闌風靜縠紋平。小舟從此逝,江海寄余生。";
 
    public AlgoVisualizer(int sceneWidth, int sceneHeight, int N){
 
        circles = new Circle[N];
        int R = 50;
 
        for(int i = 0; i < N; i++)
        {
            int x = (int)(Math.random()*(sceneWidth-2*R)) + R;
            int y = (int)(Math.random()*(sceneHeight-2*R)) + R;
 
            int vx = (int)(Math.random()*11) - 5;
            int vy = (int)(Math.random()*11) - 5;
            circles[i] = new Circle(x, y, R, vx, vy);
 
        }
 
        EventQueue.invokeLater(()->{
             frame = new AlgoFrame("Welcome-Java", sceneWidth, sceneHeight);
             frame.addKeyListener(new AlgoKeyListener());
            frame.addMouseListener(new AlgoMouseListener());
 
            new Thread(()->{run();}).start();
        });
    }
 
 
    public AlgoVisualizer(int sceneWidth, int sceneHeight, int N, String centerLael){
 
        Circle.showLabel = true;
        circles = new Circle[N];
        int R = 50;
 
        for(int i = 0; i < N; i++)
        {
            int x = (int)(Math.random()*(sceneWidth-2*R)) + R;
            int y = (int)(Math.random()*(sceneHeight-2*R)) + R;
 
            int vx = (int)(Math.random()*11) - 5;
            int vy = (int)(Math.random()*11) - 5;
//            circles[i] = new Circle(x, y, R, vx, vy);
            circles[i] = new Circle(x, y, R, vx, vy, centerLael.charAt(i) + "");
 
        }
 
        EventQueue.invokeLater(()->{
            frame = new AlgoFrame("Welcome-Java", sceneWidth, sceneHeight);
            frame.addKeyListener(new AlgoKeyListener());
            frame.addMouseListener(new AlgoMouseListener());
            new Thread(()->{
                run();
            }).start();
        });
    }
 
    private void run(){
 
        while(true)
        {
            //繪制當前數(shù)據(jù)
            frame.render(circles);
            AlgoVisHelper.pause(20);
            //更新數(shù)據(jù)
            if(isAnmiated)
            {
                for(Circle circle:circles)
                    circle.move(0, 0, frame.getCanvasWidth(), frame.getCanvasHeight());
            }
        }
    }
 
    private class AlgoKeyListener extends KeyAdapter {
        @Override
        public void keyReleased(KeyEvent event)
        {
            // 空格 動畫
            if(event.getKeyChar() == ' ')
            {
                isAnmiated = !isAnmiated;
            }
 
 
//            +事件加速,跑的更快
            if(event.getKeyChar() == '+')
            {
//                System.out.println("加速++++++");
                for(Circle circle:circles)
                {
                    circle.vx *= 2;
                    circle.vy *= 2;
 
                }
 
            }
//    —減速,慢一點
            if(event.getKeyChar() == '-')
            {
//                System.out.println("加速++++++");
                for(Circle circle:circles)
                {
                    circle.vx /= 2;
                    circle.vy /= 2;
 
 
                    if(circle.vx == 0 && circle.vy == 0)
                    {
                        System.out.println("practice makes perfect!");
                        System.out.println(SuShi_Poem);
 
                        circle.vx = (int)(Math.random()*11) - 5;
                        circle.vy = (int)(Math.random()*11) - 5;
                    }
                }
 
            }
 
 
 
        }
    }
 
    private class AlgoMouseListener extends MouseAdapter{
        @Override
        public void mousePressed (MouseEvent event)
        {
            event.translatePoint(0,
//                    (frame.getBounds().height -frame.getCanvasHeight()));
                    -(frame.getBounds().height -frame.getCanvasHeight()));
 
//            System.out.println(event.getPoint());
 
            for(Circle circle:circles)
            {
                if(circle.contain(event.getPoint())){
                    circle.isFilled = !circle.isFilled;
                }
 
            }
 
        }
    }
 
    public static void main(String[] args) {
 
        String poemData = "三月七日沙湖道中遇雨。雨具先去,同行皆狼狽,余獨不覺。已而遂晴,故作此詞 \n" +
                "莫聽穿林打葉聲,何妨吟嘯且徐行。竹杖芒鞋輕勝馬,誰怕? 一蓑煙雨任平生。\n" +
                "料峭春風吹酒醒,微冷,山頭斜照卻相迎。回首向來蕭瑟處,歸去,也無風雨也無晴。";
 
        int sceneWidth = 800;
        int sceneHeight = 800;
        int N = 15;
 
//        AlgoVisualizer visualizer = new AlgoVisualizer(sceneWidth, sceneHeight, N);
        AlgoVisualizer visualizer = new AlgoVisualizer(sceneWidth, sceneHeight, N, poemData);
 
    }
}

到此這篇關于Java實現(xiàn)帶GUI的氣泡詩詞效果的文章就介紹到這了,更多相關Java氣泡詩詞內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • tk.mybatis擴展通用接口使用詳解

    tk.mybatis擴展通用接口使用詳解

    這篇文章主要介紹了tk.mybatis擴展通用接口使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • IDEA連接postgressql數(shù)據(jù)庫操作

    IDEA連接postgressql數(shù)據(jù)庫操作

    這篇文章主要介紹了IDEA連接postgressql數(shù)據(jù)庫操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • mybatis注解與xml常用語句匯總

    mybatis注解與xml常用語句匯總

    最近一直在用mybatis,由于需要使用到了動態(tài)sql,遇到了一些問題,現(xiàn)在來總結一下,經(jīng)驗教訓。下面這篇文章主要給大家總結介紹了mybatis注解與xml常用語句的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • 如何去掉IntelliJ IDEA中mybatis對應的xml文件警告

    如何去掉IntelliJ IDEA中mybatis對應的xml文件警告

    這篇文章主要介紹了如何去掉IntelliJ IDEA中mybatis對應的xml文件警告問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • spring-data-jpa使用自定義repository來實現(xiàn)原生sql

    spring-data-jpa使用自定義repository來實現(xiàn)原生sql

    這篇文章主要介紹了在spring-data-jpa中使用自定義repository來實現(xiàn)原生sql,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java多線程(單例模式,堵塞隊列,定時器)詳解

    Java多線程(單例模式,堵塞隊列,定時器)詳解

    這篇文章主要介紹了java多線程的(單例模式,堵塞隊列,定時器),具有一定參考價值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下
    2021-08-08
  • SpringBoot自定義工具類實現(xiàn)Excel數(shù)據(jù)存入MySQL數(shù)據(jù)庫

    SpringBoot自定義工具類實現(xiàn)Excel數(shù)據(jù)存入MySQL數(shù)據(jù)庫

    這篇文章主要為大家詳細介紹了如何使用EasyExcel讀取Excel內數(shù)據(jù)并轉換為csv格式數(shù)據(jù),然后實現(xiàn)字符串分割,分割出屬性名和屬性值建表插入MySQL數(shù)據(jù)庫中,感興趣的可以了解下
    2024-03-03
  • 使用maven編譯Java項目實例

    使用maven編譯Java項目實例

    這篇文章主要介紹了使用maven編譯Java項目實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • java程序打包成exe與jar的圖文教程

    java程序打包成exe與jar的圖文教程

    這篇文章主要介紹了java程序打包成exe與jar的圖文教程,有需要的朋友可以參考一下
    2014-01-01
  • 從零開始使用IDEA創(chuàng)建SpringBoot項目(圖文)

    從零開始使用IDEA創(chuàng)建SpringBoot項目(圖文)

    這篇文章主要介紹了從零開始使用IDEA創(chuàng)建SpringBoot項目(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論

阜宁县| 彩票| 苏州市| 拉孜县| 伊吾县| 花垣县| 白水县| 河北区| 昌邑市| 册亨县| 宜春市| 左贡县| 宁津县| 文化| 扬州市| 屏东市| 颍上县| 乌苏市| 东乡县| 陇川县| 体育| 乌拉特后旗| 绵竹市| 金平| 郎溪县| 峨眉山市| 富阳市| 湖北省| 长寿区| 奉新县| 南皮县| 麦盖提县| 马山县| 孙吴县| 苏尼特右旗| 盐津县| 栾川县| 海盐县| 搜索| 新密市| 枞阳县|