鼓起勇气向你的女孩表白吧(喊上你的好兄弟)(java程序)

这篇博客分享了一款用Java编写的表白神器,通过动态对话框和背景图设置,增加了表白的成功率。程序包含按钮颜色设定、窗体关闭行为、JLabel与Label的区别、按钮位置设置以及JLabel添加背景图的方法。此外,还涉及到了按钮事件监听和窗口关闭监听,让程序更富交互性。最后,作者提供了源代码供读者参考和学习。
摘要由CSDN通过智能技术生成

相信你还在为如何向心意的女孩表达内心真实想法二发愁吧!

现在小编就给你一个非常棒的idea

那么由我想你隆重推荐一款表白的神器!

它能让你把存在内心深处多年的话全部倾吐出来!
即便相隔万里,也能增加你们成功的机率
当然对于拥有女票的男同胞们,一样可以增加两人的甜蜜
看到就是赚到,用过就是成功!!!!

废话不多说,直接上图!


一、设置按钮为red

在生成按钮后,用Font进行下一步的设置,参数一字体、参数二加粗/斜体/加粗斜体/正常,参数三字体大小,再用setForeground(Color.blue),进行添加,可任意转换颜色,记得导入相应包

二、设置窗体的关闭按钮为不可用

jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);本代码未使用,可自行添加

三、JLabel 跟 Label有什么区别

JLabel是javax.swing包里的
Label是java.awt包的
Label是JLabel的原型、JLabel比Label显示效果要好

四、如何设置按钮的位置

p.setlayout(null);
button button=new button();
button.setbounds(intx,inty,width,height);

五、利用jlabel在jframe窗体上添加背景图

JFrame jf=new JFrame(title);//创建jf的窗口对象
        JPanel jpanel=(JPanel)jf.getContentPane();
ImageIcon ico = new ImageIcon("2b.jpg");
        JLabel label1 = new JLabel(ico);//ico.getIconWidth(),ico.getIconHeight()        
        label1.setSize(635,445);
        jf.getLayeredPane().add(label1,new Integer(Integer.MIN_VALUE));//放在最底层
       
        jpanel.setOpaque(false);
        jpanel.setLayout(null);
        jpanel.add(label1);

大体思路:
1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层                                                       getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
2.把窗口面板设为内容面板并设为透明setOpaque、流动布局setLayout(new FlowLayout()。
3.之后把组件和面板添加到窗口面板就可以;

六、setBounds

public void setBounds(int x,int y,int width,int height)移动组件并调整其大小

参数详情:

x - 组件的新 x 坐标。

y - 组件的新 y 坐标。

width - 组件的新 width。

height - 组件的新 heigh

七、误区

不要认为安装上背景图后你用label添加的文本标签会被覆盖,通过上网搜查,未查到相关信息,我呢也是陷进了一段时间,最后通过改变文本标签的位置来找到了他,所以当你添加完背景图后可能会导致相对位置发生改变,记得左右上下调整一下,说不定会有意想不到的惊喜!

代码奉上:

package project;

import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.swing.*;
public class nuthing extends JFrame{
    static int a = 0 ;//正常进行的次数 
    static int exit = 0;//点×的次数
    static String[] str_exit = {"不要走嘛","尝试挽留","真的要走吗?","好吧,点1000次就给你走","骗你的,嘻嘻","此生无缘,愿你找到更好的!"};
    static String[] str = {"<html><font>xxx,你好<br>有几句话想对你说</font></html>",
    		"<html><font>我喜欢你并不是因为你的颜值<br>而是在这特殊时间里<br>你给了我特殊的感觉</font></html>",
            "<html><font>或许我真的不太会谈恋爱<br>也不太会说话<br></font></html>",
            "<html><font>但是我是真的很想跟你在一起</font></html>",
            "<html><font>我需要的并不多<br>我只是想在你一个人的时候<br>能陪在你身边的是我</font></html>",
            "<html><font>做我女朋友可以吗?</font></html>"
    };
    public void creatJFrame(String title){
        JFrame jf=new JFrame(title);//创建jf的窗口对象
        JPanel jpanel=(JPanel)jf.getContentPane();//用getContentPane()方法获得JFrame的内容面板
        JLabel label=new JLabel(str[a]);//文本标签
        Font font = new Font("宋体", 3, 27);//字体、字风格、子大小//
        label.setFont(font);
        label.setBounds(170,120,350,150);
        //label.setFont(new Font("宋体", 1, 25));//两种表示方式
        //用JLabel插图
        ImageIcon ico = new ImageIcon("2b.jpg");
        JLabel label1 = new JLabel(ico);//ico.getIconWidth(),ico.getIconHeight()        
        label1.setSize(635,445);
        jf.getLayeredPane().add(label1,new Integer(Integer.MIN_VALUE));//放在最底层
       
        jpanel.setOpaque(false);
        jpanel.setLayout(null);//有这句可以让按钮放在背景板后面
        //设置标签文字居中	
        JButton btnY=new JButton("接着看");
        JButton btnN=new JButton("不看了");
        btnY.setBounds(140, 280, 80, 30);
        btnN.setBounds(400, 280, 80, 30);
        btnY.setForeground(Color.red);//按钮改红色
//全部加入窗体容器中
        jpanel.add(btnY);
        jpanel.add(btnN);
        //可以给按钮加图片,但是需要勇气
        //btnY.setIcon(ico);
        //btnN.setIcon(ico); 
        jpanel.add(label);
        jpanel.add(label1);
       
        //下面两个监听事件是正常的流程的按钮
        //添加按钮监听事件
        btnN.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                if(nuthing.a>100|| nuthing.exit>=13)
                    System.exit(0);
                if (a<6)
                    a++;
                label.setText(str[a]);
            }
        });
        //匿名内部类
        btnY.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                if(nuthing.a>=5|| nuthing.exit>=13)
                    System.exit(0);
                if (a<6)
                    a++;
                label.setText(str[a]);//展示下一条内容
            }
        });
        btnN.addMouseListener(new MouseListener(){
            //鼠标点击、移上、移出、松开事件
            @Override
            public void mouseClicked(MouseEvent arg0) {
                if(nuthing.a >= 5){
                	btnY.setText("同意");
                }
            	//未添加相关操作//点击按钮会更新语句的原因是触发actionlistener事件
            }
            @Override
            public void mouseEntered(MouseEvent arg0) {
                // TODO Auto-generated method stub
            	if(nuthing.a >= 5){
                	btnN.setText("同意");
                }
            	else btnN.setText("接着看");
            }
            @Override
            public void mouseExited(MouseEvent arg0) {
                // TODO Auto-generated method stub
                btnN.setText("不看了");
            }
            @Override
            public void mousePressed(MouseEvent arg0) {
                // TODO Auto-generated method stub
            }
            @Override
            public void mouseReleased(MouseEvent arg0) {
                // TODO Auto-generated method stub
            }
        });
        
//这个窗体的位置是否可见等 
        jf.setSize(653, 485);
        jf.setResizable(true);//设置窗体是否可以被用户调整大小//true为可以//false为不可调
        jf.setVisible(true);//是否可见
        jf.setLocationRelativeTo(null);//设置窗口相对于指定组件的位置
        jf.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置用户在此窗体上发起 "close" 时默认执行的操作
                                                   //EXIT_ON_CLOSE--使用system exit方法退出应用程序
        jf.addWindowListener(new MyWindowListener());//
    }
    public static void main(String[] args) {
    	nuthing a =new nuthing();
        a.creatJFrame("^QAQ^");
    }
}

//JDialog临时窗口//小窗口
class MyJDialog extends JDialog{

    public MyJDialog(){
        super(new JFrame(),"^QAQ^",true);
        Container c=getContentPane();//获得面板
        JLabel label;
        if(nuthing.exit<4)
            label=new JLabel(nuthing.str_exit[nuthing.exit]);
        else if(nuthing.exit>=4&&nuthing.exit<=11)//倒数7次
            label=new JLabel(1004 - nuthing.exit+"");
        else
            label=new JLabel(nuthing.str_exit[nuthing.exit-8]);
        nuthing.exit++;
        label.setHorizontalAlignment(SwingConstants.CENTER);
        JButton btnY=new JButton("接着看");
        JButton btnN=new JButton("不看了");
        //添加按钮监听事件
        btnN.addMouseListener(new MouseListener(){
            //鼠标点击、移上、移出、松开事件
            @Override
            public void mouseClicked(MouseEvent arg0) {
                // TODO Auto-generated method stub
            	if(nuthing.a >= 5){
                	btnY.setText("同意");
                }
            }
            @Override
            //移到N按钮上就切换
            public void mouseEntered(MouseEvent arg0) {
            	if(nuthing.a >= 5){
                	btnN.setText("同意");
                }
            	else btnN.setText("接着看");
            }
            //移去后改为不看了
            @Override
            public void mouseExited(MouseEvent arg0) {
                // TODO Auto-generated method stub
                btnN.setText("不看了");
            }
            @Override
            public void mousePressed(MouseEvent arg0) {
                // TODO Auto-generated method stub
            }
            @Override
            public void mouseReleased(MouseEvent arg0) {
                // TODO Auto-generated method stub
            }
        });
        //添加按钮监听事件
        btnN.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                if(nuthing.a>=5|| nuthing.exit>=13)
                    System.exit(0);
                if (nuthing.a<6)
                	nuthing.a++;
                label.setText(nuthing.str[nuthing.a]);
            }
        });
        btnY.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                if(nuthing.a>=5|| nuthing.exit>=13)
                    System.exit(0);
                if (nuthing.a<6)
                	nuthing.a++;
                label.setText(nuthing.str[nuthing.a]);
            }
        });
        btnY.setBounds(35, 120, 80, 30);
        btnN.setBounds(180, 120, 80, 30);
        c.add(btnY);
        c.add(btnN);
        c.add(label);
        setSize(300, 200);
        setResizable(false);
        this.addWindowListener(new MyWindowListener());
        this.setLocationRelativeTo(null);

    }
}
//重写了一个窗口监听关闭的类
class MyWindowListener extends WindowAdapter{
    //窗体关闭过程中触发函数
    public void windowClosing(WindowEvent e){
        if(nuthing.exit>=14)
            System.exit(0);
//        if(nuthing.a>5)
//        	JFrame.jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        new MyJDialog().setVisible(true);

    }
}

八、最后最后一些困惑事件监听或者想了解的小伙伴,可以转至另一篇文章进行深造!

(16条消息) 事件监听的理解(ActionListener等)_PC-Jie的博客-CSDN博客https://blog.csdn.net/weixin_52451652/article/details/125570819?spm=1001.2014.3001.5502九、我保证这是最后的最后了,本次小游戏属于既可恶搞,又可增加情侣感情的小玩具

中间我也遇到很多坑,也有查阅资料,可能会相似,很多人默默中在这个上面帮助了我很多。

十、本游戏可以进行导出进行在包装,变成一个exe方便别人使用,有需要的可以自行包装,或者私信我给你包装,都莫得问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K-Pioneer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值