亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、前言

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

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

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

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

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

二、Swing+LAF生成龍年祝福

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

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 = {
            "龍年大吉,好運連連!",
            "祝福你在新的一年里騰飛如龍!",
            "龍年到,幸福跟著走,萬事如意!",
            "龍年到,祝福到,祝愿大家龍年快樂!",
            "騰四海,福滿人間。2024年開門紅,事業(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("龍年祝福語生成器");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

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

        // 添加顏色選擇監(jiān)聽器
        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);

        // 中間層:隨機選擇龍年圖片
        generateWishesButton = new JButton("生成龍年祝福語");
        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);

        // 最下層:龍年祝福語和復(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() {
        // 隨機選擇一張龍年圖片并顯示在中間層
        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();
        }

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

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

    private void copyWishesToClipboard() {
        // 復(fù)制祝福語到剪貼板
        String wishes = wishesLabel.getText();
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        clipboard.setContents(new StringSelection(wishes), null);
        JOptionPane.showMessageDialog(this, "祝福語已復(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等,目前來看好像主要就在IDE這個領(lǐng)域中應(yīng)用。

3.2、LAF

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

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

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

DarculaLaf

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

FlatLaf

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

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

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

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

相關(guān)文章

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

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

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

    Springboot Cache @CacheEvict 無法模糊刪除的解決方案

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

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

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

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

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

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

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

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

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

    idea配置Tomcat時沒有Artifacts選項的解決方法

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

    Spring各版本新特性的介紹

    今天小編就為大家分享一篇關(guān)于Spring各版本新特性的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    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ù)據(jù),項目支撐不了這么大的請求,就需要對項目以及項目接口進行數(shù)據(jù)庫、容器、緩存等方面的調(diào)優(yōu),文章中有詳細的代碼示例,需要的朋友可以參考一下
    2023-04-04
  • JAVA設(shè)計模式之建造者模式原理與用法詳解

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

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

最新評論