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

 更新时间:2018年02月12日 10:38:47   作者:阿笨爹  
这篇文章主要为大家分享了情人节写给女朋友的java小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,祝大家每天都是情人节

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

这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的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 Config下的Spring Test几种方式实例详解

    Java Config下的Spring Test几种方式实例详解

    这篇文章主要介绍了Java Config下的Spring Test方式实例代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • java实现自定义表格渲染和编辑

    java实现自定义表格渲染和编辑

    这篇文章主要为大家详细介绍了java如何实现自定义表格渲染和编辑,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • SpringBoot整合Java DL4J实现文本分类系统

    SpringBoot整合Java DL4J实现文本分类系统

    在当今信息爆炸的时代,自然语言处理领域中的文本分类显得尤为重要,文本分类能够高效地组织和管理海量的文本数据,随着互联网的飞速发展,我们每天都被大量的文本信息所包围,本文将介绍如何使用 Spring Boot 整合 Java Deeplearning4j 来构建一个文本分类系统
    2024-10-10
  • java如何根据IP获取当前区域天气信息详解

    java如何根据IP获取当前区域天气信息详解

    根据IP自动获取当地的天气预报信息这个功能大家应该都遇到过,天气预报信息用途非常广泛,篇文章主要给大家介绍了关于java如何根据IP获取当前区域天气信息的相关资料,需要的朋友可以参考下
    2021-08-08
  • 一篇文章带你深入了解Java异常

    一篇文章带你深入了解Java异常

    本篇文章主要介绍了java异常处理机制及应用,异常处理机制是Java语言的一大特色。从异常处理的机制、异常处理的方法、异常处理的原则等方面介绍Java语言的异常处理技术,有兴趣的可以了解一下
    2021-08-08
  • 详解如何使用XML配置来定义和管理Spring Bean

    详解如何使用XML配置来定义和管理Spring Bean

    XML 配置文件是 Spring 中传统的 Bean 配置方式,通过定义 XML 元素来描述 Bean 及其依赖关系,在 Spring 框架中,Bean 是由 Spring IoC(控制反转)容器管理的对象,本文将详细介绍如何使用 XML 配置来定义和管理 Spring Bean,需要的朋友可以参考下
    2024-06-06
  • Springboot静态资源的访问方法介绍

    Springboot静态资源的访问方法介绍

    最近在做SpringBoot项目的时候遇到了“白页”问题,通过查资料对SpringBoot访问静态资源做了总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java工程如何打印程序日志过程解析

    Java工程如何打印程序日志过程解析

    这篇文章主要介绍了Java工程如何打印程序日志过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 从try-with-resources到ThreadLocal,优化你的代码编写方式

    从try-with-resources到ThreadLocal,优化你的代码编写方式

    这篇文章主要为大家介绍了从try-with-resources到ThreadLocal,优化代码的编写方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java时间轮算法的实现代码示例

    Java时间轮算法的实现代码示例

    本篇文章主要介绍了Java时间轮算法的实现代码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论