情人节写给女朋友Java Swing代码程序

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

这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的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 Swing组件实现进度监视功能示例
  • Java编程使用卡片布局管理器示例【基于swing组件】
  • Java编程使用箱式布局管理器示例【基于swing组件】
  • 基于java swing实现答题系统
  • Java实现的可选择及拖拽图片的面板功能【基于swing组件】
  • Java编程swing组件JLabel详解以及使用示例
  • java实现的计算器功能示例【基于swing组件】
  • Java Swing 多线程加载图片(保证顺序一致)
  • Java Swing实现简单的体重指数(BMI)计算器功能示例
  • Java swing实现的计算器功能完整实例
  • java swing实现的扫雷游戏及改进版完整示例
  • Java swing框架实现的贪吃蛇游戏完整示例
  • Java编程实现swing圆形按钮实例代码
  • java中Swing会奔跑的线程侠
(0)

相关推荐

  • Java Swing实现简单的体重指数(BMI)计算器功能示例

    本文实例讲述了Java Swing实现简单的体重指数(BMI)计算器功能.分享给大家供大家参考,具体如下: BMI,Body Mass Index,身体质量指数,是用体重公斤数 除以 身高米数平方得出的,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准. 而本文通过运用Java Swing实现了一个简单的BMI计算器.虽然现在网页上也有相应的网页应用,但是能够做出这个计算器来,还是有点成就感的,希望自己以后做出更多比这个好的应用. 最终运行效果: 功能:可以选择三个标准:中国.亚洲.WH

  • Java swing框架实现的贪吃蛇游戏完整示例

    本文实例讲述了Java swing框架实现的贪吃蛇游戏.分享给大家供大家参考,具体如下: java是门高级语言,做游戏时适合做后台,但是用它也可以做游戏.闲来无事做的时候可以用来写点小游戏,练习练习预防早衰哈哈! 闲话不说了 下面是以前练习的作品,不怕大家笑话,那个时候用了一个礼拜才做出来的. 源码如下供大家学习. 使用的是java的 swing  Jframe Jpanel JButton   当然你也可以使用awt 先来看看运行效果: 具体代码: package Tcs; /** * * *

  • Java swing实现的计算器功能完整实例

    本文实例讲述了Java swing实现的计算器功能.分享给大家供大家参考,具体如下: package awtDemo; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Vector; public class Calculator { String str1 = "0"; // 运算数1 初值一定为0 为了程序的安全 String str2 = "0"

  • Java Swing组件实现进度监视功能示例

    本文实例讲述了Java Swing组件实现进度监视功能.分享给大家供大家参考,具体如下: 实例一: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ProgressMonitor; import javax.swing.Timer; public class TestProgressMonitor { Timer timer; public void init(

  • Java编程使用箱式布局管理器示例【基于swing组件】

    本文实例讲述了Java编程使用箱式布局管理器.分享给大家供大家参考,具体如下: 先来看看运行效果: 完整代码如下: package awtDemo; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax

  • 基于java swing实现答题系统

    本文实例为大家分享了java swing实现答题系统的具体代码,供大家参考,具体内容如下 如上图所示,代码亲测可用,如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; im

  • Java编程swing组件JLabel详解以及使用示例

    JLabel 对象可以显示文本.图像或同时显示二者.可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐.默认情况下,标签在其显示区内垂直居中对齐.默认情况下,只显示文本的标签是开始边对齐:而只显示图像的标签则水平居中对齐. 还可以指定文本相对于图像的位置.默认情况下,文本位于图像的结尾边上,文本和图像都垂直对齐. 构造方法介绍: JLabel() 创建无图像并且其标题为空字符串的 JLabel. JLabel(Icon image) 创建具有指定图像的 JLabel 实例. JL

  • java swing实现的扫雷游戏及改进版完整示例

    本文实例讲述了java swing实现的扫雷游戏及改进版.分享给大家供大家参考,具体如下: 版本1: package awtDemo; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import jav

  • Java实现的可选择及拖拽图片的面板功能【基于swing组件】

    本文实例讲述了Java实现的可选择及拖拽图片的面板功能.分享给大家供大家参考,具体如下: 今天在论坛上看到帖子希望能在 Swing 中实现像拖地图一样拖拽图片.这里是一个最简单的实现,提供了一个基本思路. import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.

  • Java Swing 多线程加载图片(保证顺序一致)

    大二的时候做的课程设计,图片管理器,当时遇到图片很多的文件夹,加载顺序非常慢.虽然尝试用多个Thread加载图片,却无法保证图片按顺序加载.直到今天学会了使用Callable接口和Future接口,于是心血来潮实现了这个功能. 废话不多说,看代码. 多线程加载图片(核心): package com.lin.imagemgr; import java.awt.Dimension; import java.awt.image.BufferedImage; import java.io.File; i

  • java实现的计算器功能示例【基于swing组件】

    本文实例讲述了java实现的计算器功能.分享给大家供大家参考,具体如下: package awtDemo; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.s

  • Java编程实现swing圆形按钮实例代码

    Swing是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕显示元素.它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT.它们是JFC的一部分.它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们.这意味着你可以在任意平台上使用JAVA支持的任意面板.轻量级组件的缺点则

  • Java编程使用卡片布局管理器示例【基于swing组件】

    本文实例讲述了Java编程使用卡片布局管理器.分享给大家供大家参考,具体如下: 运行效果: 完整示例代码: package com.han; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JB

  • java中Swing会奔跑的线程侠

    实现效果: 奔溃的线程侠:(单线程) 主线程正在处理刷新图片的请求时,无法再接受其他请求,从而陷入阻塞的死循环状态. 绘制图片 import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import javax.swing.JPanel; public class CartonPerson extends JPanel implements Runnable{ Image img[]=new Image[6

随机推荐