欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java結(jié)合Swing實(shí)現(xiàn)龍年祝福語(yǔ)生成工具

 更新時(shí)間:2024年01月19日 08:18:51   作者:棧江湖  
Swing是一個(gè)為Java設(shè)計(jì)的GUI工具包,屬于Java基礎(chǔ)類(lèi)的一部分,本文將使用Java和Swing實(shí)現(xiàn)龍年祝福語(yǔ)生成工具,感興趣的小伙伴可以了解下

一、前言

Swing是一個(gè)為Java設(shè)計(jì)的GUI工具包,屬于Java基礎(chǔ)類(lèi)的一部分。Swing包括了圖形用戶界面(GUI)功能,其組件包含:文本框、文本域、按鈕、表格、列表等。

看著這個(gè)熟悉又陌生的界面,相信對(duì)大多數(shù)人來(lái)說(shuō)Java Swing已經(jīng)淡出了我們的視線。

再看看下面的界面,好像風(fēng)格與上面完全不一樣,但的確也是Java Swing。

原來(lái)Swing提供了可編程渲染模型,使用戶可以對(duì)渲染細(xì)節(jié)進(jìn)行控制。也就是使用了LAF,那么什么是LAF呢?

Java Swing LAF(Look and Feel)是用于更改Java Swing組件的外觀和感覺(jué)的庫(kù)。LAF可以為應(yīng)用程序提供統(tǒng)一的視覺(jué)風(fēng)格,并使其更具吸引力和易用。

二、Swing+LAF生成龍年祝福

以下就是使用Java Swing+Laf實(shí)現(xiàn)的龍年祝福語(yǔ)生成器:

import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import javax.imageio.ImageIO;

public class DragonYearWishesGenerator extends JFrame {

    private JLabel wishesLabel;
    private JButton generateWishesButton;
    private JButton copyButton;
    private JLabel dragonImageLabel;
    private JCheckBox redCheckbox;
    private JCheckBox blueCheckbox;
    private JCheckBox greenCheckbox;

    private final String[] dragonYearWishes = {
            "龍年大吉,好運(yùn)連連!",
            "祝福你在新的一年里騰飛如龍!",
            "龍年到,幸福跟著走,萬(wàn)事如意!",
            "龍年到,祝福到,祝愿大家龍年快樂(lè)!",
            "騰四海,福滿人間。2024年開(kāi)門(mén)紅,事業(yè)有成,財(cái)源廣進(jìn)!",
            "龍年神獸守護(hù)您,幸福平安陪伴您!愿您龍年事業(yè)蒸蒸日上,家庭和和美美!"
            // 添加更多祝福語(yǔ)...
    };

  	//圖片放在與class文件同目錄
    private final String[] dragonImages = {
            "img1.jpg",
            "img2.jpg",
            "img3.jpg"
            // 添加更多龍年圖片資源路徑...
    };

    public DragonYearWishesGenerator() {
        initializeUI();
    }

    private void initializeUI() {
        // 設(shè)置Darcula外觀
        try {
            UIManager.setLookAndFeel("com.bulenkov.darcula.DarculaLaf");
        } catch (Exception e) {
            e.printStackTrace();
        }

        SwingUtilities.updateComponentTreeUI(this);
        this.setSize(400, 200);
        setTitle("龍年祝福語(yǔ)生成器");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        // 上層:字體顏色勾選
        JPanel colorCheckboxPanel = new JPanel();
        redCheckbox = new JCheckBox("紅色");
        blueCheckbox = new JCheckBox("藍(lán)色");
        greenCheckbox = new JCheckBox("綠色");

        // 添加顏色選擇監(jiān)聽(tīng)器
        redCheckbox.addActionListener(e -> updateFontColor());
        blueCheckbox.addActionListener(e -> updateFontColor());
        greenCheckbox.addActionListener(e -> updateFontColor());

        colorCheckboxPanel.add(redCheckbox);
        colorCheckboxPanel.add(blueCheckbox);
        colorCheckboxPanel.add(greenCheckbox);

        add(colorCheckboxPanel, BorderLayout.NORTH);

        // 中間層:隨機(jī)選擇龍年圖片
        generateWishesButton = new JButton("生成龍年祝福語(yǔ)");
        generateWishesButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                displayRandomDragonImage();
            }
        });
        add(generateWishesButton, BorderLayout.CENTER);

        dragonImageLabel = new JLabel();
        dragonImageLabel.setHorizontalAlignment(JLabel.CENTER);
        add(dragonImageLabel, BorderLayout.CENTER);

        // 最下層:龍年祝福語(yǔ)和復(fù)制按鈕
        wishesLabel = new JLabel();
        wishesLabel.setHorizontalAlignment(JLabel.CENTER);
        add(wishesLabel, BorderLayout.SOUTH);

        copyButton = new JButton("復(fù)制");
        copyButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                copyWishesToClipboard();
            }
        });

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(generateWishesButton);
        buttonPanel.add(copyButton);

        add(buttonPanel, BorderLayout.EAST);

        // 設(shè)置窗體大小為600x600
        setSize(600, 600);

        pack();
        setLocationRelativeTo(null);
    }

    private void displayRandomDragonImage() {
        // 隨機(jī)選擇一張龍年圖片并顯示在中間層
        Random random = new Random();
        int index = random.nextInt(dragonImages.length);

        try {
            // 從文件加載圖片
            InputStream stream = getClass().getResourceAsStream(dragonImages[index]);
            BufferedImage image = ImageIO.read(stream);
            // 設(shè)置圖片到中間層組件
            dragonImageLabel.setIcon(new ImageIcon(image));
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 隨機(jī)選擇一條祝福語(yǔ)并顯示在最下層
        index = random.nextInt(dragonYearWishes.length);
        wishesLabel.setText(dragonYearWishes[index]);

        // 根據(jù)選擇的顏色修改字體顏色
        updateFontColor();
    }

    private void copyWishesToClipboard() {
        // 復(fù)制祝福語(yǔ)到剪貼板
        String wishes = wishesLabel.getText();
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        clipboard.setContents(new StringSelection(wishes), null);
        JOptionPane.showMessageDialog(this, "祝福語(yǔ)已復(fù)制到剪貼板!");
    }

    private void updateFontColor() {
        // 根據(jù)選擇的顏色修改字體顏色
        Color fontColor = Color.BLACK; // 默認(rèn)黑色

        if (redCheckbox.isSelected()) {
            fontColor = Color.RED;
        } else if (blueCheckbox.isSelected()) {
            fontColor = Color.BLUE;
        } else if (greenCheckbox.isSelected()) {
            fontColor = Color.GREEN;
        }

        wishesLabel.setForeground(fontColor);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new DragonYearWishesGenerator().setVisible(true);
            }
        });
    }
}

三、Swing外觀

3.1、使用Swing的產(chǎn)品

IntelliJ IDEA

Google Android Studio

還有Eclipse、NetBeans、Mapollage、Jotasync、Apache JMeter等,目前來(lái)看好像主要就在IDE這個(gè)領(lǐng)域中應(yīng)用。

3.2、LAF

LAF 指的是 "Look and Feel",它是用戶界面設(shè)計(jì)中的一個(gè)概念,用于描述應(yīng)用程序或窗體的外觀和感覺(jué)。在 Java Swing 中,LAF 是一種機(jī)制,允許開(kāi)發(fā)人員輕松地更改應(yīng)用程序的外觀,以使其適應(yīng)不同的操作系統(tǒng)或用戶偏好。

Java Swing 庫(kù)提供了一組默認(rèn)的 Look and Feel,例如 Metal、Nimbus 等。每個(gè) Look and Feel 都定義了組件的外觀和行為,以便它們?cè)谄聊簧巷@示為特定的外觀風(fēng)格。用戶可以選擇使用不同的 Look and Feel 來(lái)改變應(yīng)用程序的外觀,以使其與操作系統(tǒng)或其他應(yīng)用程序一致。

一些第三方庫(kù)也提供了自定義的 Look and Feel:

DarculaLaf

DarculaLaf,它模仿了 IntelliJ IDEA 的深色外觀風(fēng)格(Dark Theme)。Darcula 是 Java 桌面應(yīng)用程序的 Look-n-Feel 和代碼編輯器主題。該存儲(chǔ)庫(kù)主要關(guān)注 Java 外觀,并包含現(xiàn)成的庫(kù)。

FlatLaf

FlatLaf 是一個(gè)現(xiàn)代的 Java Swing Look and Feel,它提供了扁平化的外觀,適用于創(chuàng)建現(xiàn)代化和清晰的用戶界面。FlatLaf 通過(guò)提供扁平化的設(shè)計(jì)元素、清晰的圖標(biāo)和現(xiàn)代化的外觀,使得 Swing 應(yīng)用程序能夠呈現(xiàn)現(xiàn)代風(fēng)格的用戶界面。

還有一些出色的LAF如JTattoo、WebLaF、Quaqua 等等。

Java Swing主要集中在 IDE(集成開(kāi)發(fā)環(huán)境),如 IntelliJ IDEA, Eclipse, NetBeans 等,相比與QT之類(lèi)的GUI,Java Swing的前景并不樂(lè)觀。想當(dāng)年老師還是教了好幾堂課的,用此程序紀(jì)念一下。祝愿大家在這龍年里好運(yùn)連連!!

以上就是Java結(jié)合Swing實(shí)現(xiàn)龍年祝福語(yǔ)生成工具的詳細(xì)內(nèi)容,更多關(guān)于Java Swing祝福語(yǔ)生成工具的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • spring boot如何使用POI讀取Excel文件

    spring boot如何使用POI讀取Excel文件

    本文主要介紹使用POI進(jìn)行Excel文件的相關(guān)操作,涉及讀取文件,獲取sheet表格,對(duì)單元格內(nèi)容進(jìn)行讀寫(xiě)操作,以及合并單元格的操作
    2021-08-08
  • Springboot Cache @CacheEvict 無(wú)法模糊刪除的解決方案

    Springboot Cache @CacheEvict 無(wú)法模糊刪除的解決方案

    這篇文章主要介紹了Springboot Cache @CacheEvict 無(wú)法模糊刪除的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Springboot中的Validation參數(shù)校驗(yàn)詳解

    Springboot中的Validation參數(shù)校驗(yàn)詳解

    這篇文章主要介紹了Springboot中的Validation參數(shù)校驗(yàn)詳解,Springboot參數(shù)校驗(yàn)是一種常用的驗(yàn)證機(jī)制,在傳遞參數(shù)時(shí)進(jìn)行校驗(yàn),以確保參數(shù)的有效性和正確性,該機(jī)制可以幫助開(kāi)發(fā)者在代碼實(shí)現(xiàn)前就避免一些常見(jiàn)的錯(cuò)誤,需要的朋友可以參考下
    2023-10-10
  • Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實(shí)例分享

    Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實(shí)例分享

    這篇文章主要介紹了Java中用戶向系統(tǒng)傳遞參數(shù)的三種基本方式實(shí)例,有需要的朋友可以參考一下
    2014-01-01
  • Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    本文給大家分享的是使用java實(shí)現(xiàn)的獲取當(dāng)前日期前后N天的函數(shù),非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-03-03
  • Java xml數(shù)據(jù)格式返回實(shí)現(xiàn)操作

    Java xml數(shù)據(jù)格式返回實(shí)現(xiàn)操作

    這篇文章主要介紹了Java xml數(shù)據(jù)格式返回實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • idea配置Tomcat時(shí)沒(méi)有Artifacts選項(xiàng)的解決方法

    idea配置Tomcat時(shí)沒(méi)有Artifacts選項(xiàng)的解決方法

    本文主要介紹了idea配置Tomcat時(shí)沒(méi)有Artifacts選項(xiàng)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Spring各版本新特性的介紹

    Spring各版本新特性的介紹

    今天小編就為大家分享一篇關(guān)于Spring各版本新特性的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 性能調(diào)優(yōu)之java服務(wù)器容器調(diào)優(yōu)詳解

    性能調(diào)優(yōu)之java服務(wù)器容器調(diào)優(yōu)詳解

    這篇文章主要介紹了java服務(wù)器容器調(diào)優(yōu),如果接口響應(yīng)時(shí)間超過(guò)了既定數(shù)據(jù),項(xiàng)目支撐不了這么大的請(qǐng)求,就需要對(duì)項(xiàng)目以及項(xiàng)目接口進(jìn)行數(shù)據(jù)庫(kù)、容器、緩存等方面的調(diào)優(yōu),文章中有詳細(xì)的代碼示例,需要的朋友可以參考一下
    2023-04-04
  • JAVA設(shè)計(jì)模式之建造者模式原理與用法詳解

    JAVA設(shè)計(jì)模式之建造者模式原理與用法詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之建造者模式,簡(jiǎn)單說(shuō)明了建造者模式的原理、組成,并結(jié)合實(shí)例形式分析了java建造者模式的定義與用法,需要的朋友可以參考下
    2017-08-08

最新評(píng)論