马上又要到情人节了,再不解风情的人也得向女友表示表示。作为一个程序员,示爱的时候自然也要用我们自己的方式。

这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的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!"); // 按钮1

button2 = new JButton("Yes, I do!"); // 按钮2

dialog1 = new JDialog(this); // 创建一个新的对话框,并设置父窗口为当前窗体

windowInitial();

setWindowListener();

}// constructor

public 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() {

@Override

public void mouseReleased(MouseEvent e) {return;}

@Override

public void mousePressed(MouseEvent e) {return;}

@Override

public void mouseExited(MouseEvent e) {return;}

@Override

public 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

@Override

public void mouseClicked(MouseEvent e) {

dialog1.setVisible(true);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}// mouseClicked

});// MouseListener

button1.setBounds(70, 110, 110, 30);

button1.setFont(new Font("", Font.BOLD, 13));

/**

* 以匿名内部类的方式为按钮2添加鼠标事件监听器,按下时显示对话框

*/

button2.addMouseListener(new MouseListener() {

@Override

public void mouseReleased(MouseEvent e) {return;}

@Override

public void mousePressed(MouseEvent e) {return;}

@Override

public void mouseExited(MouseEvent e) {return;}

@Override

public void mouseEntered(MouseEvent e) {return;}

@Override

public void mouseClicked(MouseEvent e) {

dialog1.setVisible(true);

chooseFlag = true;

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}// mouseClicked

});// MouseListener

button2.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() {

@Override

public void mouseReleased(MouseEvent e) {return;}

@Override

public void mousePressed(MouseEvent e) {return;}

@Override

public void mouseExited(MouseEvent e) {return;}

@Override

public void mouseEntered(MouseEvent e) {return;}

@Override

public 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() {

@Override

public void windowOpened(WindowEvent e) {return;}

@Override

public void windowIconified(WindowEvent e) {return;}

@Override

public void windowDeiconified(WindowEvent e) {return;}

@Override

public void windowDeactivated(WindowEvent e) {return;}

@Override

public void windowClosed(WindowEvent e) {return;}

@Override

public void windowActivated(WindowEvent e) {return;}

@Override

public void windowClosing(WindowEvent e) {

if(!chooseFlag) {

String labelTxt = "Is your default choose \"Yes, I do!\"?"; // 自行修改

new HappyValentinsDay(labelTxt, "NO", "YES");

}// if

}// windowClosing

});// WindowListener

}// setWindowListener

public static void main(String[] args) {

HappyValentinsDay myApp = new HappyValentinsDay();

myApp.setVisible(true);

}// main

}/*HappyValentinsDay*/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家,祝大家情人节快乐

java情人节_情人节写给女朋友Java Swing代码程序相关推荐

  1. 送给女朋友的java程序_情人节写给女朋友Java Swing代码程序

    马上又要到情人节了,再不解风情的人也得向女友表示表示.作为一个程序员,示爱的时候自然也要用我们自己的方式. 这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的Java Swing代码,主要定 ...

  2. 给女朋友道歉的java代码_情人节写给女朋友Java Swing代码程序

    马上又要到情人节了,再不解风情的人也得向女友表示表示.作为一个程序员,示爱的时候自然也要用我们自己的方式. 这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的Java Swing代码,主要定 ...

  3. java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?

    前段时间学习完了MySQL和JDBC,想着自己做个东西实战一下,于是写了一个烂大街的图书管理系统...但好歹是自己一个人日夜兼程,硬着头皮做出来的还像样的东西,总结一手吧.看的人欢迎吐槽.我会从以下几 ...

  4. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?

    对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...

  5. java安装_我最喜欢的Java高级开发人员书籍

    java安装 我上一篇博客文章(我对高级Java开发人员的十个最喜欢的在线资源)的想法,是由Xiaoran Wang发表的 "面向高级Java开发人员的十大网站"的启发. Wang ...

  6. java超线程_超线程多核心下Java多线程编程技术分析

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述超线程多核心下Java多线程编程技术分析,更多Java专业知识,广州疯狂 ...

  7. linux java 获取路径怎么写_linux中java获取路径的实例代码

    linux中java获取路径怎么写? 在Unix/Linux中,路径的分隔采用正斜"/",比如"cd /home/java". 在java的代码开发中 \ 是代 ...

  8. 内存泄漏java例子_一次线上Java应用内存泄漏分析实例

    由于JVM的内存管理采用GC垃圾自动回收机制,这使得Java程序员在编程的时候确实可以从内存管理中释放出来,但这也引发了另外一个大问题,一旦Java应用出现内存泄漏的时候,常常让人措手不及,陷入无从下 ...

  9. 高级java开发_我最喜欢的Java高级开发人员书籍

    高级java开发 我上一篇博客文章 (我对高级Java开发人员的十个最喜欢的在线资源)的想法,是由Xiaoran Wang发表的"面向高级Java开发人员的十大网站"的启发. Wa ...

最新文章

  1. TensorFlow被曝存在严重bug,搭配Keras可能丢失权重,用户反映一个月仍未修复
  2. CC++面试题大汇总
  3. linux 网卡驱动分析,LINUX_网卡驱动分析
  4. 华为云welink考试试题_华为内部开启WeLink项目,华为云是这样考虑的-通信/网络-与非网...
  5. android 实现显示电量,Android开发:显示电池电量
  6. cad lisp 画四边形_多年经验总结CAD技巧6
  7. C代码中的命名方式总结和改进
  8. 在 Java EE 组件中使用 Camel Routes
  9. 一首歌,一种情感,一种心情
  10. 巴赛尔协议与贷款产品利率解析
  11. CentOS中获取文件的前四个字节的16进制值
  12. 华为Java开发编程军规,谁违反谁走
  13. 脚注交叉引用序号不一样_著作权合理使用制度之“适当引用”的界定
  14. Linux 迅雷 chrome插件,Chrome(Chromium)迅雷下载支持扩展1.1测试版【更新】
  15. matlab中prod函数、mean函数、median函数——小白MAT LAB学习笔记
  16. 关于maven :pom.xml文件中父工程部分提示spring-boot-starter-parent:2.0.7.RELEAS not found
  17. wps参考文献乱码。英文的行间距怎么调?
  18. 计算机输入设备的作用,认识计算机输入设备—键盘
  19. 利用Lync Online与MSN联系人沟通
  20. NB-IOT的基础知识

热门文章

  1. vue 集成 Loading 加载效果
  2. VS Code 报错Vetur can‘t find ‘tsconfig.json‘ or ‘jsconfig.json‘的解决方法
  3. 项目启动时flowable报错提示 version mismatch: library version is *, db version is *
  4. Flowable 数据库表结构 ACT_ID_MEMBERSHIP
  5. js $.ajax stop,jQuery.ajaxStop() 函数详解
  6. android7.0uri,整理: 解决Android7.0以上文件报FileUriExposedException问题
  7. c++ 字符串相等比较
  8. js java 反射机制_java 类加载机制和反射机制
  9. 软件测试技术qtp,51Testing独家连载:(四十一)精通QTP——自动化测试技术领航
  10. php中fread()函数,php fread()函数