Java+swing實(shí)現(xiàn)抖音上的表白程序詳解
帶你手把手,用 java swing實(shí)現(xiàn)抖音上的表白程序
1.準(zhǔn)備工作
a.需要下載一個(gè)帶著swing插件的eclipse
b.需要配置好JDK
c.創(chuàng)建一個(gè)JFrame的項(xiàng)目(如下圖所示的步驟)
d.把資源文件放入與src所在的那個(gè)目錄
步驟如下:
1.先復(fù)制資源文件
2.粘貼文件
3.把jar文件放入Referenced Libraries文件夾下
? 這第3步的具體操作如何所示
那么如何判斷添加是否成功呢?
解答:看Referenced Libraries下面是否出現(xiàn)了剛剛build path的
兩個(gè)文件,若出現(xiàn)了,則代表添加成功(成功的視圖如下所示:)
e.design界面和source界面主要是干嘛的?
source界面用于寫源代碼,主要是用于寫觸發(fā)按鍵某一事件,需要進(jìn)行簡(jiǎn)單的邏輯判斷
design界面是通過可視化界面來幫我們進(jìn)行界面的基本設(shè)計(jì),直接拖拽即可,不用書寫那些定義、基本屬性的賦值這類的java代碼了
2.界面窗體的設(shè)計(jì)與實(shí)現(xiàn)
整體的按鈕的布局應(yīng)該如下圖所示
實(shí)現(xiàn)過程如下:
? a.對(duì)窗體進(jìn)行操作
//設(shè)置窗體關(guān)閉模式 exit-退出程序 do_nothing退出沒有任何操作 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設(shè)置窗體的大小和坐標(biāo) x y 寬度 高度 setBounds(100, 100, 584, 439); //居中顯示 setLocationRelativeTo(null); //設(shè)置窗體不可拖拽 setResizable(false); //設(shè)置窗體的圖標(biāo) setIconImage(new ImageIcon("love.png").getImage());
b.在design界面.根據(jù)剛剛的布局分布圖,把按鍵移動(dòng)到合適位置
c.把gif圖片設(shè)置為相應(yīng)為相應(yīng)按鈕的圖標(biāo)
lblNewLabel.setIcon(newImageIcon("E:\\Ueclipseworkspace\\love\\gfriend.gif"));
d.對(duì)剩下的組件進(jìn)行顏色的設(shè)置
//以button按鈕為例,進(jìn)行顏色的設(shè)置 //setforeground是設(shè)置控件里面的字體顏色 btnNewButton.setForeground(Color.WHITE); //setbackground是設(shè)置控件里面的背景顏色 btnNewButton.setBackground(Color.PINK); //setforeground是設(shè)置控件里面字體類型以及字體大小 btnNewButton.setFont(new Font("微軟雅黑", Font.BOLD, 15));
3.對(duì)按鈕加上監(jiān)聽事件
3.1 對(duì)"好的"這個(gè)按鈕加上鼠標(biāo)點(diǎn)擊事件
3.1.1 在design界面對(duì)"好的"按鈕添加鼠標(biāo)點(diǎn)擊事件
3.1.2 跳轉(zhuǎn)到resource界面后,對(duì)鼠標(biāo)點(diǎn)擊事件加上具體操作
//鼠標(biāo)點(diǎn)擊后就會(huì)彈出提示 FrameUtil.msg("好的,老婆我就知道你會(huì)同意的"); //結(jié)束程序 System.exit(0);
3.2 對(duì)"滾"這個(gè)按鈕加上鼠標(biāo)進(jìn)入事件
3.2.1 在design界面對(duì)"滾"按鈕添加鼠標(biāo)進(jìn)入事件
3.2.2 跳轉(zhuǎn)到resource界面后,對(duì)鼠標(biāo)進(jìn)入事件加上具體操作
//彈出信息框,不斷的挽留,不允許它退出程序 FrameUtil.msg("老婆大人,原諒我好嗎?"); FrameUtil.msg("我錯(cuò)了,再也不敢把錢不上交了");
3.3 對(duì)"滾"這個(gè)按鈕加上鼠標(biāo)點(diǎn)擊事件(點(diǎn)中隨機(jī)位置了)
3.3.1 在design界面對(duì)"滾"按鈕添加鼠標(biāo)點(diǎn)擊事件
3.3.2 跳轉(zhuǎn)到resource界面后,對(duì)鼠標(biāo)點(diǎn)擊事件加上具體操作
//當(dāng)用戶點(diǎn)擊到滾按鈕的隨機(jī)位置時(shí),也要進(jìn)行一波挽留操作,不允許拒絕 //彈窗彈出挽留語(yǔ)句 FrameUtil.msg("老婆大人,原諒我好嗎?"); FrameUtil.msg("我錯(cuò)了,再也不敢把錢不上交了");
4.設(shè)置滾按鈕的層級(jí)為最上面
無論怎么移動(dòng),都是最上層
5.為界面添加一首背景音樂
//前提:需要把他人寫好的資源包build path到自己的項(xiàng)目中 //需要在窗體可見之前進(jìn)行設(shè)置 FrameUtil.playMusic("嫁給我.mp3"); //當(dāng)這首歌的路徑和src文件夾同級(jí)別時(shí),這樣寫就可以了 //這個(gè)放的位置在方法體外面
6.源代碼
package demo; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import com.frame.util.FrameUtil; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Color; import java.awt.Font; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Random; public class Love extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Love frame = new Love(); //設(shè)置窗體不可見 // FrameUtil.playMusic("嫁給我.mp3"); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); FrameUtil.playMusic("嫁給我.mp3"); } /** * Create the frame. */ public Love() { //設(shè)置窗體的大小 setTitle("\u9ED1\u51E4\u68A8"); //設(shè)置窗體關(guān)閉模式 exit-退出程序 do_nothing退出沒有任何操作 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設(shè)置窗體的大小和坐標(biāo) x y 寬度 高度 setBounds(100, 100, 584, 439); //劇中顯示 setLocationRelativeTo(null); //設(shè)置窗體不可拖拽 setResizable(false); //設(shè)置窗體的圖標(biāo) setIconImage(new ImageIcon("love.png").getImage()); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JButton button = new JButton("\u6EDA"); button.setForeground(Color.WHITE); button.setFont(new Font("微軟雅黑", Font.BOLD, 15)); button.setBackground(Color.PINK); button.setBounds(396, 273, 113, 27); button.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent arg0) { Random random=new Random(); int x=random.nextInt(480); int y=random.nextInt(380); button.setBounds(x, y, 113, 27); } @Override public void mouseClicked(MouseEvent e) { FrameUtil.msg("老婆大人,原諒我好嗎?"); FrameUtil.msg("我錯(cuò)了,再也不敢把錢不上交了"); } }); contentPane.add(button); JLabel lblNewLabel = new JLabel("New label"); lblNewLabel.setIcon(new ImageIcon("E:\\Ueclipse-workspace\\love\\gfriend.gif")); lblNewLabel.setBounds(14, 40, 200, 200); contentPane.add(lblNewLabel); JLabel lblNewLabel_1 = new JLabel("\u5C0F\u59D0\u59D0\u6211\u559C\u6B22\u4F60\u5F88\u4E45\u4E86"); lblNewLabel_1.setFont(new Font("微軟雅黑", Font.BOLD, 20)); lblNewLabel_1.setForeground(Color.PINK); lblNewLabel_1.setBounds(269, 57, 219, 73); contentPane.add(lblNewLabel_1); JLabel label = new JLabel("\u505A\u6211\u5973\u670B\u53CB\u597D\u5417?"); label.setForeground(Color.RED); label.setFont(new Font("微軟雅黑", Font.BOLD, 20)); label.setBounds(269, 167, 219, 73); contentPane.add(label); JButton btnNewButton = new JButton("\u597D\u7684"); btnNewButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { //JOptionPane.showMessageDialog(null,"我的"); FrameUtil.msg("好的,老婆我就知道你會(huì)同意的"); System.exit(0); } }); btnNewButton.setForeground(Color.WHITE); btnNewButton.setBackground(Color.PINK); btnNewButton.setFont(new Font("微軟雅黑", Font.BOLD, 15)); btnNewButton.setBounds(254, 272, 113, 27); contentPane.add(btnNewButton); } }
以上就是Java+swing實(shí)現(xiàn)抖音上的表白程序詳解的詳細(xì)內(nèi)容,更多關(guān)于Java swing表白程序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
手動(dòng)模擬JDK動(dòng)態(tài)代理的方法
這篇文章主要介紹了手動(dòng)模擬JDK動(dòng)態(tài)代理的方法,幫助大家更好的了解和學(xué)習(xí)Java 代理的相關(guān)知識(shí),感興趣的朋友可以了解下2020-11-11關(guān)于@RequestParam的使用所遇到的404問題
這篇文章主要介紹了關(guān)于@RequestParam的使用所遇到的404問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08java開發(fā)WMS倉(cāng)庫(kù)商品預(yù)警需求示例解析
這篇文章主要為大家介紹了java開發(fā)WMS倉(cāng)庫(kù)商品預(yù)警需求示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04Java?SpringBoot整合shiro-spring-boot-starterqi項(xiàng)目報(bào)錯(cuò)解決
這篇文章主要介紹了Java?SpringBoot整合shiro-spring-boot-starterqi項(xiàng)目報(bào)錯(cuò)解決,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考一下2022-08-08IDEA 2020.3 更新了機(jī)器學(xué)習(xí)都整上了
IDEA 歡迎窗口全新升級(jí),首頁(yè)增加三個(gè)選項(xiàng)卡,一個(gè)用于設(shè)置 IDE 界面的 Customize,一個(gè)用于插件安裝的 Plugins,一個(gè)于訪問幫助和學(xué)習(xí)資源的 Learn IntelliJ IDEA,另外包括之前用于管理項(xiàng)目的 Projects,需要的朋友可以參考下2020-12-12純Java實(shí)現(xiàn)數(shù)字證書生成簽名的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄僇ava實(shí)現(xiàn)數(shù)字證書生成簽名的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解
這篇文章主要介紹了Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07