今天是情人节哈,再不解风情的人也得向女友表示表示。作为一个程序员,示爱的时候自然也要用我们自己的方式。这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的Java Swing代码,主要定义了一个对话框,让女友选择是不是喜欢自己。如果她选了“是”,皆大欢喜,如果她想选“不”,哼哼。。。看一下截图吧。

代码效果图:

接下来不废话,直接上代码了。新版本已上传,也欢迎大家到我的github上下载和改进代码(点此转到github)。

另外就是因为这个代码当时是在情人节的时候写的,对话框标题栏的信息也是与情人节相关,要想在其他的节日使用,只需要修改几个字符串就可以了,我在需要修改的地方都打了中文注释,大家可以很容易地找到。不过正如我在注释里写的那样,这个程序顶多是你俩之间一个温馨的小玩笑,你要是想今晚嘿嘿嘿的话,真正的礼物还是得备好哦: )

package gift_package;import java.awt.Container;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;/*** A funny code for your lover, which creates a frame that let her/him choose * whether she/he loves you. If she/he choose 'YES', everythingis normal, but* if she/he tries to choose 'NO', something interestingwould happen. First,* the 'NO' button would change its position, it lookes like it attemps to escape* from being clicked. After a couple of rounds, if she/he still want to click * 'NO' button, the 'NO' button and 'YES' button will exchange their position. * Besides, the window will cannot be closed untill the 'YES' button is clicked.* * To use this code, please make sure her/his computer has installed the JRE. * * Note that this code is just a little joke, DO NOT USE IT AS A REAL VALENTIN'S * DAY GIFT, if you want to get laid at Valentin's Day, use ROSE, WINE and FANCY* RESTAURANT, if you want to keep your mate's love, use YOUR HEART.** @author rainman_zjd* @version initialt version, 2016.3.20*/
public class HappyValentinsDay extends JFrame {private static final long serialVersionUID = 1L;private JLabel     label;private JButton    button1;private JButton    button2;private JDialog    dialog1;private int enterCount = 0;private boolean chooseFlag = false;public static final int screenWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();public static final int screenHeight = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();public HappyValentinsDay() {label   = new JLabel("Hi, my name is rainman_zjd, I love you, do you love me?", SwingConstants.CENTER); // 自行修改button1 = new JButton("No, I don't!"); // 按钮1button2 = new JButton("Yes, I do!");   // 按钮2dialog1 = new JDialog(this);           // 创建一个新的对话框,并设置父窗口为当前窗体windowInitial();setWindowListener();}// constructorpublic HappyValentinsDay(String labelTxt, String bt1Txt, String bt2Txt) {label   = new JLabel(labelTxt, SwingConstants.CENTER);button1 = new JButton(bt1Txt);button2 = new JButton(bt2Txt);dialog1 = new JDialog(this);windowInitial();chooseFlag = true;setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);setVisible(true);}// constructor_String/*** 窗体初始化,使用的是绝对布局*/private void windowInitial() {setDialog(dialog1, "Awesome!", "Meeting you is the luckest thing in my life!"); // 自行修改label.setFont(new Font("", Font.BOLD, 17));label.setBounds(0, 30, 480, 20);/*** 以匿名内部类的方式为按钮1添加鼠标事件监听器,当鼠标进入按钮1后将突然改变自己的位置*/button1.addMouseListener(new MouseListener() { @Overridepublic void mouseReleased(MouseEvent e) {return;}           @Overridepublic void mousePressed(MouseEvent e) {return;}            @Overridepublic void mouseExited(MouseEvent e) {return;}            @Overridepublic void mouseEntered(MouseEvent e) {switch(enterCount) {case 0:button1.setBounds(75, 60, 110, 30);HappyValentinsDay.this.repaint();++enterCount;break;case 1:button1.setBounds(75, 110, 110, 30);HappyValentinsDay.this.repaint();++enterCount;break;case 2:button1.setBounds(155, 60, 110, 30);HappyValentinsDay.this.repaint();++enterCount;break;case 3:button1.setBounds(75, 110, 110, 30);HappyValentinsDay.this.repaint();++enterCount;break;case 4:button1.setBounds(310, 110, 110, 30);button2.setBounds(75, 110, 110, 30);HappyValentinsDay.this.repaint();++enterCount;break;case 5:button1.setBounds(75, 110, 110, 30);button2.setBounds(310, 110, 110, 30);HappyValentinsDay.this.repaint();enterCount = 0;break;}// seitch_entercount}// mouseEntered           @Overridepublic void mouseClicked(MouseEvent e) {dialog1.setVisible(true);setDefaultCloseOperation(DISPOSE_ON_CLOSE);}// mouseClicked});// MouseListenerbutton1.setBounds(70, 110, 110, 30);button1.setFont(new Font("", Font.BOLD, 13));/*** 以匿名内部类的方式为按钮2添加鼠标事件监听器,按下时显示对话框*/button2.addMouseListener(new MouseListener() {      @Overridepublic void mouseReleased(MouseEvent e) {return;}           @Overridepublic void mousePressed(MouseEvent e) {return;}           @Overridepublic void mouseExited(MouseEvent e) {return;}            @Overridepublic void mouseEntered(MouseEvent e) {return;}           @Overridepublic void mouseClicked(MouseEvent e) {dialog1.setVisible(true);chooseFlag = true;setDefaultCloseOperation(DISPOSE_ON_CLOSE);}// mouseClicked});// MouseListenerbutton2.setBounds(310, 110, 110, 30);button2.setFont(new Font("", Font.BOLD, 13));Container c = getContentPane();c.setLayout(null);c.add(label);c.add(button1);c.add(button2);setTitle("Happy Valentin's Day!"); // 自行修改setBounds(screenWidth/2-250, screenHeight/2-100, 500, 200);setResizable(false);setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);}// windowInitial/*** 设置对话框属性* @param diag* @param tittle* @param txt*/private void setDialog(JDialog diag, String tittle, String txt) {JLabel diagLabel = new JLabel(txt, SwingConstants.CENTER);diagLabel.setFont(new Font("", Font.BOLD, 17));diagLabel.setBounds(0, 40, 430, 20);JButton diagBut = new JButton("Confirm");diagBut.setFont(new Font("", Font.BOLD, 14));diagBut.setBounds(155, 100, 100, 30);diagBut.addMouseListener(new MouseListener() {            @Overridepublic void mouseReleased(MouseEvent e) {return;}                        @Overridepublic void mousePressed(MouseEvent e) {return;}                        @Overridepublic void mouseExited(MouseEvent e) {return;}                     @Overridepublic void mouseEntered(MouseEvent e) {return;}          @Overridepublic void mouseClicked(MouseEvent e) {diag.dispose();if (chooseFlag)System.exit(0);}// mouseClicked});diag.setTitle(tittle);diag.setBounds(screenWidth/2-225, screenHeight/2-100, 450, 200);diag.setLayout(null);diag.add(diagBut);diag.add(diagLabel);}// setDialog/*** 设置单击窗口关闭按钮时的动作*/private void setWindowListener() {this.addWindowListener(new WindowListener() {           @Overridepublic void windowOpened(WindowEvent e) {return;}         @Overridepublic void windowIconified(WindowEvent e) {return;}           @Overridepublic void windowDeiconified(WindowEvent e) {return;}@Overridepublic void windowDeactivated(WindowEvent e) {return;}@Overridepublic void windowClosed(WindowEvent e) {return;}          @Overridepublic void windowActivated(WindowEvent e) {return;}@Overridepublic void windowClosing(WindowEvent e) {if(!chooseFlag) {String labelTxt = "Is your default choose \"Yes, I do!\"?"; // 自行修改new HappyValentinsDay(labelTxt, "NO", "YES");}// if}// windowClosing});// WindowListener}// setWindowListenerpublic static void main(String[] args) {HappyValentinsDay myApp = new HappyValentinsDay();myApp.setVisible(true);}// main}/*HappyValentinsDay*/

情人节写给女朋友的小程序相关推荐

  1. 分享下自己写的一个微信小程序请求远程数据加载到页面的代码

    分享下自己写的一个微信小程序请求远程数据加载到页面的代码 1  思路整理 就是页面加载完毕的时候  请求远程接口,然后把数据赋值给页面的变量 ,然后列表循环 2 js相关代码  我是改的 onload ...

  2. python恶搞小程序-知道了这个,你也能写出 Python 趣味小程序

    原标题:知道了这个,你也能写出 Python 趣味小程序 前两天在 51CTO 看见某篇推荐博文,大概是一个 豆子比较感兴趣,在知乎和 github 上搜索了相关的源代码,发现原来实现起来非常的简单, ...

  3. python文件分发_python 写一个文件分发小程序

    一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...

  4. python有趣小程序-知道了这个,你也能写出 Python 趣味小程序

    原标题:知道了这个,你也能写出 Python 趣味小程序 前两天在 51CTO 看见某篇推荐博文,大概是一个 豆子比较感兴趣,在知乎和 github 上搜索了相关的源代码,发现原来实现起来非常的简单, ...

  5. 用Windows自带的工具写一个一键关机小程序

    如何用Windows自带的工具写一个一键关机小程序 工具/原料(打勾勾的可用可不用) 装有Windows系统的电脑 在机子上装个格式工厂(版本随意,最好更新到最新的) 制作环境 windows自带命令 ...

  6. 初次入坑解析的小程序(决定写代码风格的小程序)

    初次入坑解析的小程序(决定写代码风格的小程序) 我是一个大二的学生,在接触小程序之前我是一个学计算机运维的,后来入了坑,在入坑以后开发了两个小程序. 第一个是为学校开发的一个考勤的小程序,样式是别人设 ...

  7. python趣味程序_知道了这个,你也能写出 Python 趣味小程序

    原标题:知道了这个,你也能写出 Python 趣味小程序 前两天在 51CTO 看见某篇推荐博文,大概是一个 豆子比较感兴趣,在知乎和 github 上搜索了相关的源代码,发现原来实现起来非常的简单, ...

  8. 用python编写一个猜年龄的小程序-知道了这个,你也能写出 Python 趣味小程序

    原标题:知道了这个,你也能写出 Python 趣味小程序 前两天在 51CTO 看见某篇推荐博文,大概是一个 豆子比较感兴趣,在知乎和 github 上搜索了相关的源代码,发现原来实现起来非常的简单, ...

  9. 闲来无事,用java写了一个魔方小程序。附源码

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

最新文章

  1. 工业用微型计算机笔记(14)-指令系统(9)
  2. pdf在线翻译_如何将英文的PDF文档翻译成中文简体?
  3. Android NDK开发Crash错误定位
  4. Ubuntu GitHub操作——使用仓库
  5. 中国顶级程序员图鉴,最后一个厉害了!
  6. nrf52840 spi 32MHz配置
  7. 初学者学Python必看的几个练手小项目,轻松不枯燥哦
  8. c++ primer plus编程练习题参考第六章
  9. React实现微信公众号支付
  10. Dreamweaver DW中清除代码中多余空行的方法(去除空行)
  11. win7计算机建立无线网络连接不上,win7无线网络显示❌,win7连不上无线网显示红叉...
  12. 【剑指offter】【C++】【二叉树】27. 二叉树的镜像
  13. 正则匹配html标签和内容,正则匹配HTML标签(不保留内容和保留内容、过滤标签的的属性)...
  14. FineUI中用JS在前端与后端中传数据
  15. Imu_heading源码阅读(四)——具体实现
  16. 某人的手机卡被猫吞后
  17. oracle的安装实验报告,Oracle实验报告Oracle实验报告.doc
  18. 「想体验ChatGPT中文聊天?」那快进来,你用不上算我输
  19. tcpdump 和Wireshark抓包
  20. 分类机器学习中,某一标签占比太大(标签稀疏),如何学习?

热门文章

  1. VMware16 安装CentOS8详细教程
  2. JSP-Servlet实现网上BBS项目小案例
  3. Linux平台命令挂载U盘——实现数据共享
  4. 基克的聚合 机器人_LOL基克的先驱是什么_LOL不为人知的装备基克的先驱_玩游戏网...
  5. 用VMware虚拟机安装Ubuntu时出现窗口显示不完全的解决方案
  6. windows中探测计算网络的MTU值,window中ping命令参数和Linux中ping命令参数
  7. java app调用支付宝支付
  8. Android MUPDF阅读器放大模糊优化
  9. 独享大带宽服务器能否满足直播平台的需求
  10. 保险行业的快速发展,主要运用了哪些人工智能技术?