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

Java 畫時(shí)鐘遇到的問(wèn)題及解決方案

 更新時(shí)間:2021年11月05日 10:54:57   作者:煙溪彭于晏  
我是一個(gè)剛?cè)腴T的小菜鳥,希望我寫的東西可以幫助和我一樣剛?cè)腴T的兄弟們少走一些彎路,也希望大佬們可以多指點(diǎn)指點(diǎn)我。感謝!解決在畫時(shí)鐘遇到的問(wèn)題讓我花費(fèi)不少時(shí)間...說(shuō)兩個(gè)困擾我比較久的

1.不能一直得到當(dāng)前的時(shí)間,導(dǎo)致刷新時(shí)間不變。

剛開始我自以為把int s = calendar.get(Calendar.SECOND)放到一個(gè)線程線程里再刷新就可以看到秒的變化了,

可惜結(jié)果并不是我想到那樣,畫面并沒(méi)有任何變化。

然后我一頓亂操作,最后還是得去問(wèn)老師。/(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~

讓我知道了還有時(shí)間監(jiān)聽器這個(gè)東西,看來(lái)我知道還是太少啦 (;′⌒`)

加入下列代碼就行啦

2.piant方法里

g.drawString("s",x,y)刷新的時(shí)候后一個(gè)數(shù)字覆蓋前一個(gè)數(shù)字,假如秒從0開始,下一秒的1會(huì)直接畫在0上,原來(lái)的0不會(huì)消失,drawLine()也是如此。如下圖

為什么會(huì)有這個(gè)問(wèn)題呢?

因?yàn)槟阒爱嬌先サ臎](méi)有擦掉,所以全混在一起

然后咋解決呢?

想到用g.clearRect()去解決,發(fā)現(xiàn)位置有點(diǎn)難調(diào)。/(ㄒoㄒ)/~~

調(diào)了半天然后發(fā)現(xiàn)直接覆蓋了連內(nèi)容都不顯示了 /(ㄒoㄒ)/~~ 不知道是不是我的用法有錯(cuò) ≧ ﹏ ≦

到這里我只能去找度娘求助。

找到了一個(gè)好辦法 上圖:

也就是圖上兩行代碼。

調(diào)用super.paintComponent(g) 問(wèn)題就被解決了

super.paintComponent(g) 會(huì)調(diào)用組件的原始界面重新繪制,這樣就相當(dāng)于把上次的擦除啦。

最后把我源碼附上。請(qǐng)各位指點(diǎn)!

 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.http.WebSocket;
import java.net.http.WebSocket.Listener;
import java.util.Calendar;
import java.util.Date;
 
public class ClockFrame extends JFrame {
    ClockFrame() {
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 400);
        setLocationRelativeTo(null);
    }
 
    public static void main(String[] args) {
        ClockFrame frame = new ClockFrame();
        ClockPanel panel = new ClockPanel();
        frame.add(panel);
        panel.setCalendar();
        frame.setVisible(true);
    }
}
 
 
class ClockPanel extends JPanel {
    //        畫h:m:s;
    Calendar calendar = Calendar.getInstance();
    int s = calendar.get(Calendar.SECOND);
    int m = calendar.get(Calendar.MINUTE);
    int h = calendar.get(Calendar.HOUR);
 
    public void setCalendar() {
        Timer timer = new Timer(1000, new Listener());
        timer.start();
    }
    class Listener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            s++;
            if (s == 60) {
                m++;
                s = 0;
            }
            if (m == 60) {
                h++;
                m = 0;
            }
            repaint();
        }
    }
 
    //run 動(dòng)態(tài)
    int sx = 190;
    int sy = 70;
 
    ClockPanel() {
        setBackground(Color.GRAY);
    }
 
    public void paint(Graphics g) {
        super.paintComponent(g);
//        圓
        g.drawOval(83, 57, 220, 220);
 
        //畫點(diǎn)
        g.fillOval(190, 170, 5, 5);//Center
        for (int i = 12; i > 0; i--) {
            g.fillOval((int) (190 + 100 * Math.sin(Math.PI / 6 * i)), (int) (170 + 100 * Math.cos(Math.PI / 6 * i)), 5, 5);
            String time = i + "";
            g.setFont(new Font("微軟雅黑", Font.BOLD, 15));
            g.drawString(time, (int) (190 + Math.sin(Math.PI / 6 * i) * 100), (int) (170 - Math.cos(Math.PI / 6 * i) * 100));
        }
        g.setFont(new Font("微軟雅黑", Font.BOLD, 20));
        String S = s > 10 ? s + "" : "0" + s;
        String M = m > 10 ? m + "" : "0" + m;
        String H = h > 10 ? h + "" : "0" + h;
        g.drawString("現(xiàn)在是中國(guó)時(shí)間" + H + ":" + M + ":" + S, 80, 40);
 
        final BasicStroke stokeLine = new BasicStroke(3.0f);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setStroke(stokeLine);
        g.setColor(Color.black);
        g.drawLine(190, 170, (int) (190 + (Math.cos((s * Math.PI / 30) - Math.PI / 2) * 100)), (int) (170 + (Math.sin((s * Math.PI / 30 - Math.PI / 2)) * 100)));
        g.setColor(Color.blue);
        g.drawLine(190, 170, (int) (190 + (Math.cos((m * Math.PI / 30 - Math.PI / 2)) * 100)), (int) (170 + (Math.sin((m * Math.PI / 30 - Math.PI / 2)) * 100)));
        g.setColor(Color.GREEN);
        g.drawLine(190, 170, (int) (190 + (Math.cos((h * Math.PI / 12)) * 100)), (int) (170 + ((Math.sin(h * Math.PI / 12)) * 100)));
    }
}
 
 
 

到此這篇關(guān)于Java 畫時(shí)鐘遇到的問(wèn)題及解決方案的文章就介紹到這了,更多相關(guān)Java 畫時(shí)鐘內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)本地日期時(shí)間處理

    java實(shí)現(xiàn)本地日期時(shí)間處理

    這篇文章主要介紹了本地日期時(shí)間處理的程序,實(shí)現(xiàn)了下面的功能,大家參考使用吧
    2014-01-01
  • 詳解使用Spring Boot開發(fā)Web項(xiàng)目

    詳解使用Spring Boot開發(fā)Web項(xiàng)目

    這篇文章主要介紹了詳解使用Spring Boot開發(fā)Web項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • IDEA中實(shí)體類(POJO)與JSON快速互轉(zhuǎn)問(wèn)題

    IDEA中實(shí)體類(POJO)與JSON快速互轉(zhuǎn)問(wèn)題

    這篇文章主要介紹了IDEA中實(shí)體類(POJO)與JSON快速互轉(zhuǎn),本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Java實(shí)現(xiàn)TFIDF算法代碼分享

    Java實(shí)現(xiàn)TFIDF算法代碼分享

    這篇文章主要介紹了Java實(shí)現(xiàn)TFIDF算法代碼分享,對(duì)算法進(jìn)行了簡(jiǎn)單介紹,概念,原理,以及實(shí)現(xiàn)代碼的分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java TimedCache 帶時(shí)間緩存工具類詳解使用

    Java TimedCache 帶時(shí)間緩存工具類詳解使用

    工具類是包含集合框架、遺留的 collection 類、事件模型、日期和時(shí)間設(shè)施、國(guó)際化和各種實(shí)用工具類(字符串標(biāo)記生成器、隨機(jī)數(shù)生成器和位數(shù)組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時(shí)間處理模式、日期工具等各類常用工具包,本文將介紹帶時(shí)間緩存工具類
    2021-10-10
  • Java中枚舉的實(shí)現(xiàn)原理介紹

    Java中枚舉的實(shí)現(xiàn)原理介紹

    大家好,本篇文章主要講的是Java中枚舉的實(shí)現(xiàn)原理介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java split()方法中的特殊符號(hào)舉例詳解

    Java split()方法中的特殊符號(hào)舉例詳解

    Java中的split方法可以將一個(gè)字符串按照指定的分隔符進(jìn)行分割,返回一個(gè)字符串?dāng)?shù)組,這篇文章主要給大家介紹了關(guān)于Java split()方法中的特殊符號(hào)的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • 在SpringBoot項(xiàng)目中實(shí)現(xiàn)讀寫分離的流程步驟

    在SpringBoot項(xiàng)目中實(shí)現(xiàn)讀寫分離的流程步驟

    SpringBoot作為一種快速開發(fā)框架,廣泛應(yīng)用于Java項(xiàng)目中,在一些大型應(yīng)用中,數(shù)據(jù)庫(kù)的讀寫分離是提升性能和擴(kuò)展性的一種重要手段,本文將介紹如何在SpringBoot項(xiàng)目中優(yōu)雅地實(shí)現(xiàn)讀寫分離,并通過(guò)適當(dāng)?shù)拇a插入,詳細(xì)展開實(shí)現(xiàn)步驟,同時(shí)進(jìn)行拓展和分析
    2023-11-11
  • Java實(shí)現(xiàn)經(jīng)典游戲飛機(jī)大戰(zhàn)-I的示例代碼

    Java實(shí)現(xiàn)經(jīng)典游戲飛機(jī)大戰(zhàn)-I的示例代碼

    《飛機(jī)大戰(zhàn)-I》是一款融合了街機(jī)、競(jìng)技等多種元素的經(jīng)典射擊手游。本文將利用java語(yǔ)言實(shí)現(xiàn)這游戲,文中采用了swing技術(shù)進(jìn)行了界面化處理,感興趣的可以了解一下
    2022-02-02
  • 詳解Java的構(gòu)造方法及類的初始化

    詳解Java的構(gòu)造方法及類的初始化

    這篇文章主要為大家詳細(xì)介紹了Java的構(gòu)造方法及類的初始化,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴可以了解一下
    2022-08-08

最新評(píng)論

温州市| 兴山县| 毕节市| 德阳市| 黑水县| 通城县| 八宿县| 梧州市| 巴林右旗| 沂南县| 青浦区| 南开区| 津南区| 普宁市| 兴宁市| 海伦市| 芒康县| 武山县| 蓝山县| 黄山市| 罗定市| 武平县| 梧州市| 镶黄旗| 神池县| 准格尔旗| 松潘县| 祥云县| 林芝县| 合川市| 泰州市| 耿马| 华阴市| 达孜县| 恩施市| 同德县| 二连浩特市| 阿合奇县| 平塘县| 西宁市| 嫩江县|