相信你还在为如何向心意的女孩表达内心真实想法二发愁吧!
现在小编就给你一个非常棒的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方便别人使用,有需要的可以自行包装,或者私信我给你包装,都莫得问题!