首页
动态
归档
Github
留言
工具箱
更多
邻居
壁纸
音乐
Search
1
欢迎访问我的日志空间
8,244 阅读
2
C语言读写程序文件-学习三十二
742 阅读
3
WEB音乐播放器源码
712 阅读
4
Typecho - Joe主题魔改版(持续更新)
660 阅读
5
Typecho-1.1/17.10.30-定制版源码
639 阅读
学习笔记
源码库
BUG
第九艺术
登录
Search
标签搜索
学习笔记
C语言
typecho
Java
扫雷
源码
PHP
插件
网站源码
音乐播放器
模板
git
github
bug
XG.孤梦
累计撰写
50
篇文章
累计收到
44
条评论
首页
栏目
学习笔记
源码库
BUG
第九艺术
页面
动态
归档
Github
留言
工具箱
邻居
壁纸
音乐
搜索到
50
篇与
的结果
2022-07-14
Git上传项目到Github仓库教程
介绍Git:一个开源的分布式版本控制工具。Github: 一个面向开源及私有软件项目保存用户的数据、代码等文件的托管平台。准备阶段Github&创建仓库Github账号点击访问Github官网,如果访问速度很慢,可以开代理或者开加速器登录直接的github账号,如果没有账号点击右上角的 Sign up 跳转到注册界面注册账号。输入邮箱、密码、用户名信息点击继续,完成邮箱验证即注册成功,然后登录注册的账号创建仓库1.登录账号后,点击右上角的+ --> 点击 New repository2.输入仓库名称,勾选上 Add a README file,然后点击 Greate repository3.仓库创建完成安装git客户端;Git官网地址: https://git-scm.com/[line]下载[/line]Git官方版Windows版Mac版Linux版Git-GUI版WindowsGUI版MacGUI版LinuxGUI版选择适合的版本进入下载,按照安装向导完成安装,不需要配置其他的东西,直接Next。下面以Windows官方版进行演示,其他操作系统操作一致。连接仓库Git配置1.选择要上传的文件,右键鼠标选择 Git Bash Here2.输入命令 ssh-keygen -t rsa -C "your email@youremail.com" ,按提示输入一直回车即可生成秘钥,找到秘钥的文件路径。3.在文件夹中打开秘钥所在路径然后选择 id_rsa.pub 右键以记事本方式打开,复制里面的秘钥。github配置创建SSH秘钥1.点击头像 --> 点击Settings2.点击 SSH and GPG keys --> 点击New SSH Keys3.输入标题名称,然后粘贴从 id_rsa.pub 文件里复制的秘钥,点击 Add SHH key 4.验证连接,输入命令 ssh -T git@github.com 回车,根据提示输入 yes,出现图片中的提示就说明成功了。配置用户信息设置username和email,github每次commit都会记录这些信息。输入命令: git config --global user.name "注册时填写的名字" 输入命令:git config --global user.email "注册时填写的邮箱" 上传文件上面的环节配置完毕后,下次上传只需要执行以下命令选择要上传的文件,右键鼠标选择 Git Bash Here1.输入命令 git init 将本地项目变成 Git 可以管理的仓库2.输入命令 git add . 将项目的所有文件添加到暂存区3.输入命令 git commit -m "自己项目提交的描述" 将项目文件提交到仓库4.复制github仓库地址,点击 Code --> SSH --> 点击复制5.输入命令 git remote add origin 仓库地址链接 ,连接仓库6.输入命令 git pull --rebase origin master或者main 获取远程库与本地同步(远程仓库不为空需要这一步)7.输入命令 git push -u origin master 上传代码到github远程仓库更新文件进入要更新的项目文件根目录,右键鼠标选择 Git Bash Here1.输入命令 git status 查看当前的git仓库状态2.输入命令 git add * 添加全部更新3.输入命令 git commit -m "更新说明" 添加说明到项目文件4.输入命令 git pull 拉取当前分支最新代码,防止与他人更新代码冲突5.输入命令 git push origin master 更新上传代码到github远程仓库[line]教程到此结束[/line]
2022年07月14日
230 阅读
0 评论
3 点赞
2022-07-09
Typecho - Joe主题魔改版(持续更新)
Joe主题1.1.8版本更新特点1.主题会随时间自动变换模式,默认(7:00-19:00)2.增加手机端页面名片卡片显示,修改了部分css3.修复了部分bug修改内容较多,请自行探索更新历史{collapse} {collapse-item label="1.1.7"]移除原来不规范的媒体插入方式,增加评论图片上传插入开关(配置详情见文章《Typecho-Joe主题实现图片评论功能》),效果见我的博客优化了部分模块css显示效果,修复了移动端界面排版错乱问题新增b站表情包包含116个表情[/collapse-item]{collapse-item label="1.1.6"]修复了排行榜,重新对接了各平台Api增加了Github页面模板文件(github.php 默认是我的github信息)修改github信息方法:页面新加字段 github,值为你的github账户名。[/collapse-item]{collapse-item label="1.1.5"]修复静态资源失效问题修复了部分UI布局问题增加了扫码登录入口、评论与动态ip归属地显示、所有评论等开关增加了右下角登录按钮,下雪特效等功能 [/collapse-item] {collapse-item label="1.1.4"]修复部分css显示错误增加作者信息卡片个性签名配合定制后台使用增加作者信息卡片背景图片自定义配合定制后台使用 [/collapse-item] {collapse-item label="1.1.3"]修复部分bug增加了自定义页面模板(可根据需要自行修改) [/collapse-item] {collapse-item label="1.1.2"]修复bug [/collapse-item] {collapse-item label="1.1.1"]修复cdn文件被污染无法访问,改为本地文件 [/collapse-item] {collapse-item label="1.1.0"]修复头像显示问题修改部分页面布局修复侧边栏天气api改为和风天气增加了页面访问密码模板(MkEncrypt.php)使用方法:打开 MkEncrypt.php ,查看注释介绍; 页面新加字段 passwd 值为你的要设置密码。[/collapse-item]{/collapse}注意:文件夹名必须是 Typecho-Joe-Theme如果想要修改文件名,请使用VScode或者其他编辑工具打开文件搜索 /Typecho-Joe-Theme/ ,将所有搜索出来的资源路径中Typecho-Joe-Theme替换成你想要的文件名安装教程下载后解压到网站根目录/usr/themes/文件加中;登录到typecho后台 --> 更换外观 --> 启用点击设置外观修改自己想要的设置手机端下边栏修改代码Typecho-Joe-Theme/public/footer.php文件中,将 # 修改成自己想要的链接(不打开移动下边栏设置可以忽略)展示图PC端首页移动端首页评论区模板后台管理界面github地址:https://github.com/XG2020/Typecho-Joe-Theme{card-default width="100%" label="下载地址"}[btn href="https://www.lanzoum.com/b01drs7ob" type="primary"]点击下载[/btn] 复制密码: [copy]xggm[/copy] {/card-default}
2022年07月09日
660 阅读
5 评论
3 点赞
2022-07-09
Typecho-1.1/17.10.30-定制版源码
版本特点修复了头像显示问题(因国内屏蔽了Gravatar,更换为Cravatar国内源)移除版本更新提示修改了后台部分UI,增加了权限提示增加了个性签名,登录ip显示等功能后台自带美化插件,安装后手动开启首页界面注册登录界面默认开启美化插件后台界面管理员开启美化插件关注者开启美化插件申请页面链接自行修改,在 网站根目录\admin\index.php 图片中的片段个人设置开启美化插件暗黑模式github地址:https://github.com/XG2020/TypechoDIY
2022年07月09日
639 阅读
0 评论
5 点赞
2022-07-01
typecho邮件通知插件
本插件建议配合定制版typecho使用效果最佳适用版本 typecho1.1.17.10.30其他版本需要修改插件文件夹目录下Plugin.php文件中的版本判断相关代码功能说明定制版Typecho可使用额外功能找回密码请求时间间隔设置,防止恶意请求找回密码功能,通过邮件找回密码评论审核通过时发送邮件给评论者用户评论文章时发送邮件给文章博主用户评论被回复时发送邮件给被评论用户邮件模板说明插件有三个模板,可以根据自己的想法修改模板,在插件文件夹的theme目录下:approved.html:邮件审核通过通知模板。author.html:文章评论通知作者模板。reply.html:评论回复通知被回复者模板。插件管理界面Github地址:https://github.com/XG2020/XGComment
2022年07月01日
206 阅读
0 评论
3 点赞
2022-05-26
Java实现扫雷小游戏三
接下来是完成菜单栏的功能游戏菜单添加菜单监听器(com.panel/BombJMenuBar.java)在init()方法中插入// 开局事件处理 menuItemStart.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { mainframe.reStartGame(); } }); // 添加事件监听器 MenuListener listener = new MenuListener(mainframe); menuItemStart.addActionListener(listener); menuItemLow.addActionListener(listener); menuItemMid.addActionListener(listener); menuItemHigh.addActionListener(listener); menuItemOrder.addActionListener(listener); menuHeroLow.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { new Hero(mainframe); }}); menuHeroMid.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { new Hero1(mainframe); }}); menuHeroHigh.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { new Hero2(mainframe); }}); menuItemAbout.addActionListener(listener); // 后门外挂方便测试 menuItemHole.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); menuItemExit.addActionListener(new ActionListener() { //加一个系统退出的处理监听 public void actionPerformed(ActionEvent e) { System.exit(0); } });编写等级菜单监听类(com.listener/MenuListener)// 等级菜单监听器 public class MenuListener implements ActionListener { JMenuItem jMenuItem; JTextField jTextField=new JTextField(); MainFrame mainframe; public MenuListener(MainFrame mainframe){ this.mainframe = mainframe; } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("开局(N)")){ this.mainframe.reStartGame(); } if(e.getActionCommand().equals("初级(B)")){ Tools.rows = 9; Tools.cols = 9; Tools.allcount = 10; Tools.currentLevel = Tools.LOWER_LEVEL; this.mainframe.reStartGame(); } if(e.getActionCommand().equals("中级(I)")){ Tools.rows = 16; Tools.cols = 16; Tools.allcount = 40; Tools.currentLevel = Tools.MIDDLE_LEVEL; this.mainframe.reStartGame(); } if(e.getActionCommand().equals("高级(E)")){ Tools.rows = 16; Tools.cols = 30; Tools.allcount = 99; Tools.currentLevel = Tools.HEIGHT_LEVEL; this.mainframe.reStartGame(); } if(e.getActionCommand().equals("自定义(C)")){ new UserDefined(mainframe); } if(e.getActionCommand().equals("关于扫雷(A)")){ new About(mainframe); } } }注意:在雷区BombJPanel.java中之前是把行和列写成固定的,实现初级、中级、高级时要进行下述修改:// MineLabel[][] labels = new MineLabel[9][9]; MineLabel[][] labels = new MineLabel[Tools.rows][Tools.cols];运行效果:自定义菜单项(com.dialog/UserDefined.java)需求分析:出现弹窗界面,数据校验不能超过三位,只能为数字。通过继承JDialog实现用户自定义对话框public class UserDefined extends JDialog { // 自定义 private static final long serialVersionUID = 1L; private JLabel jLabelHigh = new JLabel("高度: "); private JLabel jLabelWide = new JLabel("宽度: "); private JLabel jLabelBomb = new JLabel("雷数: "); private JLabel jLabelMessage = new JLabel(" "); private JTextField jTextFieldHigh; private JTextField jTextFieldWide; private JTextField jTextFieldBomb; private JPanel panel; private JButton buttonSure; private JButton buttonCancer; MainFrame mainFrame; public UserDefined(final MainFrame mainFrame) { super(mainFrame); this.mainFrame = mainFrame; this.setIconImage(Tools.getImageIcon().getImage()); jLabelMessage.setFont(new Font("楷书", Font.PLAIN, 12)); jLabelMessage.setForeground(Color.red); this.setTitle("自定义雷区"); this.add(getPanel()); this.add(jLabelMessage, BorderLayout.NORTH); this.setSize(new Dimension(200, 150)); this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); this.setLocationRelativeTo(null); this.setResizable(false); this.addWindowListener(new WindowAdapter() { @Override public void windowDeactivated(WindowEvent e) { mainFrame.reStartGame(); } }); this.setModal(true); this.setVisible(true); } public JPanel getPanel() { JPanel jPanel = new JPanel(); Border border1 = BorderFactory.createEmptyBorder(5, 20, 5, 5); panel = new JPanel(); panel.setLayout(new GridLayout(1, 2)); Box boxHigh = Box.createHorizontalBox(); jTextFieldHigh = new JTextField(Tools.rows + ""); jTextFieldHigh.setPreferredSize(new Dimension(30, 20)); jTextFieldHigh.addKeyListener(new KeyListener() { @Override public void keyReleased(KeyEvent e) { String text = jTextFieldHigh.getText(); Pattern pattern = Pattern.compile("^[0-9]{1,3}$"); Matcher matcher = pattern.matcher(text); if (!matcher.matches()) { jLabelMessage.setText("请输入数字,不能超过三位"); if (text.length() > 3) { jTextFieldHigh.setText(text.substring(0, 3)); } } } @Override public void keyTyped(KeyEvent e) { char ch = e.getKeyChar(); if ((ch < '0') || (ch > '9')) { jLabelMessage.setText("请输入数字,不能超过三位"); e.setKeyChar((char) 8); } else { jLabelMessage.setText(" "); } } @Override public void keyPressed(KeyEvent e) { } }); boxHigh.add(jLabelHigh); boxHigh.add(jTextFieldHigh); Box boxWide = Box.createHorizontalBox(); jTextFieldWide = new JTextField(Tools.cols + ""); jTextFieldWide.setPreferredSize(new Dimension(30, 20)); jTextFieldWide.addKeyListener(new KeyListener() { @Override public void keyReleased(KeyEvent e) { String text = jTextFieldWide.getText(); Pattern pattern = Pattern.compile("^[0-9]{1,3}$"); Matcher matcher = pattern.matcher(text); if (!matcher.matches()) { jLabelMessage.setText("请输入数字,不能超过三位"); if (text.length() > 3) { jTextFieldWide.setText(text.substring(0, 3)); } } } @Override public void keyTyped(KeyEvent e) { char ch = e.getKeyChar(); if ((ch < '0') || (ch > '9')) { jLabelMessage.setText("请输入数字,不能超过三位"); e.setKeyChar((char) 8); } else { jLabelMessage.setText(" "); } } @Override public void keyPressed(KeyEvent e) { } }); boxWide.add(jLabelWide); boxWide.add(jTextFieldWide); Box boxBomb = Box.createHorizontalBox(); jTextFieldBomb = new JTextField(Tools.bombCount + ""); jTextFieldBomb.setPreferredSize(new Dimension(30, 20)); jTextFieldBomb.addKeyListener(new KeyListener() { @Override public void keyReleased(KeyEvent e) { String text = jTextFieldBomb.getText(); Pattern pattern = Pattern.compile("^[0-9]{1,3}$"); Matcher matcher = pattern.matcher(text); if (!matcher.matches()) { jLabelMessage.setText("请输入数字,不能超过三位"); if (text.length() > 3) { jTextFieldBomb.setText(text.substring(0, 3)); } } } @Override public void keyTyped(KeyEvent e) { char ch = e.getKeyChar(); if ((ch < '0') || (ch > '9')) { jLabelMessage.setText("请输入数字,不能超过三位"); e.setKeyChar((char) 8); } else { jLabelMessage.setText(" "); } } @Override public void keyPressed(KeyEvent e) { } }); boxBomb.add(jLabelBomb); boxBomb.add(jTextFieldBomb); Box boxS = new Box(BoxLayout.Y_AXIS); boxS.add(boxHigh); boxS.add(Box.createVerticalStrut(8)); boxS.add(boxWide); boxS.add(Box.createVerticalStrut(8)); boxS.add(boxBomb); boxS.add(Box.createVerticalStrut(8)); boxS.setBorder(border1); Box boxT = new Box(BoxLayout.Y_AXIS); buttonSure = new JButton("确定"); UserDefinedListener definedListener = new UserDefinedListener(this, mainFrame); buttonSure.setPreferredSize(new Dimension(70, 30)); buttonSure.setMargin(new Insets(0, 2, 0, 2)); buttonSure.addActionListener(definedListener); buttonCancer = new JButton("取消"); buttonCancer.setMargin(new Insets(0, 2, 0, 2)); buttonCancer.setSize(new Dimension(70, 30)); buttonCancer.addActionListener(definedListener); boxT.add(buttonSure); boxT.add(Box.createVerticalStrut(25)); boxT.add(buttonCancer); boxT.setBorder(border1); panel.add(boxS); panel.add(boxT); Border border = BorderFactory.createEmptyBorder(3, 15, 5, 15); jPanel.setBorder(border); jPanel.add(panel); return jPanel; } }自定义窗口监听器(com.listener/UserDefinedListener.java)public class UserDefinedListener implements ActionListener { UserDefined userDefined; MainFrame mainFrame; public UserDefinedListener(UserDefined userDefined, MainFrame mainFrame) { this.mainFrame = mainFrame; this.userDefined = userDefined; } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == userDefined.getButtonCancer()) { userDefined.dispose(); mainFrame.reStartGame(); } else if (e.getSource() == userDefined.getButtonSure()) { String highT = userDefined.getjTextFieldHigh().getText(); Pattern pattern = Pattern.compile("^[0-9]{1,3}$"); Matcher matcher = pattern.matcher(highT); int row = 0; if (!matcher.matches()) { userDefined.getjLabelMessage() .setText("输入的行数范围应在9-30之间"); return; } else { row = Integer.parseInt(highT); if (row < 9 || row > 30) { userDefined.getjLabelMessage().setText( "输入的行数范围应在9-30之间"); return; } } String colT = userDefined.getjTextFieldWide().getText(); int col = 0; try { col = Integer.parseInt(colT); if (col < 9 || col > 30) { userDefined.getjLabelMessage().setText( "输入的列数范围应在9-30之间"); return; } } catch (Exception e2) { userDefined.getjLabelMessage().setText( "列数应该为数字且范围应在9-30之间"); return; } String mineT = userDefined.getjTextFieldBomb().getText(); int mine = 0; try { mine = Integer.parseInt(mineT); if (mine < 10) { mine = 10; } else { mine = Math.min(mine, Tools.rows * Tools.cols * 4 / 5); } } catch (Exception e3) { userDefined.getjLabelMessage().setText("雷数应该为数字"); return; } userDefined.dispose(); Tools.rows = row; Tools.cols = col; Tools.allcount = mine; mainFrame.reStartGame(); } } }运行效果:英雄榜弹出胜利窗口(com.dialog/Win.java)public class Win extends JDialog { MainFrame mainframe; private JTextField text; TreeSet<Own> LOWER = new TreeSet<Own>(); TreeSet<Own> MIDDLE = new TreeSet<Own>(); TreeSet<Own> HEIGHT = new TreeSet<Own>(); public Win(MainFrame mainframe){ this.mainframe = mainframe; this.setIconImage(Tools.getImageIcon().getImage()); this.setTitle("扫雷成功"); this.setLocationRelativeTo(null); this.setSize(200, 150); this.init(); this.setVisible(true); } private void init() { // 存放记入 JPanel panel = new JPanel(); panel.setLayout(new GridLayout(4,1)); JLabel label = new JLabel("好厉害!请留下你的大名"); panel.add(label); text = new JTextField(); panel.add(text); // times = mainframe.getTimer().getTimes(); JLabel labTime = new JLabel("你所使用的时间:"+Tools.timecount); panel.add(labTime); JButton butys = new JButton("保存"); butys.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(Tools.currentLevel.equals("初级")){ if(Tools.time1>=Tools.timecount && Tools.time2>=Tools.timecount && Tools.time3>=Tools.timecount){ Tools.time3 = Tools.time2; Tools.name3 = Tools.name2; Tools.time2 = Tools.time1; Tools.name2 = Tools.name1; Tools.time1 = Tools.timecount; Tools.name1=text.getText(); }else if(Tools.time2>=Tools.timecount && Tools.time3>=Tools.timecount && Tools.time1<=Tools.timecount){ Tools.time3 = Tools.time2; Tools.name3 = Tools.name2; Tools.time2 = Tools.timecount; Tools.name2=text.getText(); }else if(Tools.time3>=Tools.timecount && Tools.time1<=Tools.timecount && Tools.time2<=Tools.timecount){ Tools.time3 = Tools.timecount; Tools.name3=text.getText(); } } if(Tools.currentLevel.equals("中级")){ if(Tools.time01>=Tools.timecount && Tools.time02>=Tools.timecount && Tools.time03>=Tools.timecount){ Tools.time03 = Tools.time02; Tools.name03 = Tools.name02; Tools.time02 = Tools.time01; Tools.name02 = Tools.name01; Tools.time01 = Tools.timecount; Tools.name01=text.getText(); }else if(Tools.time02>=Tools.timecount && Tools.time03>=Tools.timecount && Tools.time01<=Tools.timecount){ Tools.time03 = Tools.time02; Tools.name03 = Tools.name02; Tools.time02 = Tools.timecount; Tools.name02=text.getText(); }else if(Tools.time03>=Tools.timecount && Tools.time01<=Tools.timecount && Tools.time02<=Tools.timecount){ Tools.time03 = Tools.timecount; Tools.name03=text.getText(); } } if(Tools.currentLevel.equals("高级")){ if(Tools.time001>=Tools.timecount && Tools.time002>=Tools.timecount && Tools.time003>=Tools.timecount){ Tools.time003 = Tools.time002; Tools.name003 = Tools.name002; Tools.time002 = Tools.time001; Tools.name002 = Tools.name001; Tools.time001 = Tools.timecount; Tools.name001=text.getText(); }else if(Tools.time002>=Tools.timecount && Tools.time003>=Tools.timecount && Tools.time001<=Tools.timecount){ Tools.time003 = Tools.time002; Tools.name003 = Tools.name002; Tools.time002 = Tools.timecount; Tools.name002=text.getText(); }else if(Tools.time003>=Tools.timecount && Tools.time001<=Tools.timecount && Tools.time002<=Tools.timecount){ Tools.time003 = Tools.timecount; Tools.name003=text.getText(); } } Win.this.dispose(); } }); panel.add(butys); this.add(panel); } public JTextField getText() { return text; }运行效果:英雄榜类(com.dialog/Hero.java)英雄榜分为初级、中级、高级英雄榜;每个英雄榜类逻辑是一样的,通过胜利窗口的事件监听器判断是哪个等级的英雄榜数据,然后写入临时变量中保存。以此类推编写中级、高级英雄榜Hero1,Hero2,当然也可以只写一个类,不过需要多加一些判断条件。public class Hero extends JDialog{ private JLabel jlabel1; private JLabel jlabel2; private JLabel jlabel3; private JLabel jlabel4; private JLabel jlabel5; private JLabel jlabel6; private JLabel time1; private JLabel time2; private JLabel time3; private JLabel name1; private JLabel name2; private JLabel name3; private JButton jbutton1; private JButton jbutton2; private MainFrame mainframe; private JPanel jpanel; public Hero(MainFrame mainframe) { this.mainframe=mainframe; this.setIconImage(Tools.getImageIcon().getImage()); this.setTitle("初级英雄榜"); this.setVisible(true); this.setSize(220,220); this.setResizable(false); this.setLocationRelativeTo(mainframe); this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); init(); } public JLabel getJLabel1() { return jlabel1; } public void setJLabel1(JLabel jlabel1) { this.jlabel1 = jlabel1; } public JLabel getJLabel2() { return jlabel2; } public void setJLabel2(JLabel jlabel2) { this.jlabel2 = jlabel2; } public JLabel getJLabel3() { return jlabel3; } public void setJLabel3(JLabel jlabel3) { this.jlabel3 = jlabel3; } public JLabel getJLabel4() { return jlabel4; } public void setJLabel4(JLabel jlabel4) { this.jlabel4 = jlabel4; } public JLabel getJLabel5() { return jlabel5; } public void setJLabel5(JLabel jlabel5) { this.jlabel5 = jlabel5; } public JLabel getJLabel6() { return jlabel6; } public void setJLabel6(JLabel jlabel6) { this.jlabel6 = jlabel6; } public JLabel getTime1() { return time1; } public void setTime1(JLabel time1) { this.time1 = time1; } public JLabel getTime2() { return time2; } public void setTime2(JLabel time2) { this.time2 = time2; } public JLabel getTime3() { return time3; } public void setTime3(JLabel time3) { this.time3 = time3; } public JLabel getName1() { return name1; } public void setName1(JLabel name1) { this.name1 = name1; } public JLabel getName2() { return name2; } public void setName2(JLabel name2) { this.name2 = name2; } public JLabel getName3() { return name3; } public void setName3(JLabel name3) { this.name3 = name3; } public void init(){ HeroListener heroListener = new HeroListener(); jlabel1 = new JLabel(" 名次"); jlabel2 = new JLabel(" 成绩"); jlabel3 = new JLabel(" 玩家"); jlabel4 = new JLabel(" 第一名:"); jlabel5 = new JLabel(" 第二名:"); jlabel6 = new JLabel(" 第三名:"); time1 = new JLabel(""+Tools.time1); time2 = new JLabel(""+Tools.time2); time3 = new JLabel(""+Tools.time3); name1 = new JLabel(" "+Tools.name1); name2 = new JLabel(" "+Tools.name2); name3 = new JLabel(" "+Tools.name3); jbutton1=new JButton("确定"); jbutton1.addActionListener(heroListener); jbutton2=new JButton("重新设置"); jbutton2.addActionListener(heroListener); jpanel=new JPanel(); Box box1 = Box.createVerticalBox(); box1.add(jlabel1); box1.add(Box.createVerticalStrut(10)); box1.add(jlabel4); box1.add(Box.createVerticalStrut(10)); box1.add(jlabel5); box1.add(Box.createVerticalStrut(10)); box1.add(jlabel6); Box box2 = Box.createVerticalBox(); box2.add(jlabel2); box2.add(Box.createVerticalStrut(10)); box2.add(time1); box2.add(Box.createVerticalStrut(10)); box2.add(time2); box2.add(Box.createVerticalStrut(10)); box2.add(time3); Box box3 = Box.createVerticalBox(); box3.add(jlabel3); box3.add(Box.createVerticalStrut(10)); box3.add(name1); box3.add(Box.createVerticalStrut(10)); box3.add(name2); box3.add(Box.createVerticalStrut(10)); box3.add(name3); Box box4 = Box.createHorizontalBox(); box4.add(jbutton1); box4.add(Box.createHorizontalStrut(20)); box4.add(jbutton2); Box box5 = Box.createHorizontalBox(); box5.add(box1); box5.add(box2); box5.add(box3); Box box6 = Box.createVerticalBox(); box6.add(Box.createVerticalStrut(20)); box6.add(box5); box6.add(Box.createVerticalStrut(20)); box6.add(box4); jpanel.add(box6); this.add(jpanel); } class HeroListener implements ActionListener{ public void actionPerformed(ActionEvent e){ String command = e.getActionCommand(); if(command.equals("确定")){ dispose(); } else { Tools.time1 = 999; Tools.time2 = 999; Tools.time3 = 999; Tools.name1 = " 匿名"; Tools.name2 = " 匿名"; Tools.name3 = " 匿名"; time1.setText(""+Tools.time1); name1.setText(Tools.name1); time2.setText(""+Tools.time2); name2.setText(Tools.name2); time3.setText(""+Tools.time3); name3.setText(Tools.name3); //dispose(); } } } }运行效果:帮助菜单关于扫雷(com.dialog/About.java)可以根据自己的需求添加想要的窗口内容。public class About extends JDialog { MainFrame mainframe; public About(MainFrame mainframe){ this.setIconImage(Tools.getImageIcon().getImage()); this.mainframe = mainframe; this.setTitle("关于扫雷"); this.setLocationRelativeTo(null); this.setResizable(false); this.setSize(200, 130); this.init(); this.setVisible(true); } private void init() { Box box = Box.createVerticalBox(); JPanel jpanel = new JPanel(); JLabel jlabel = new JLabel("扫雷 ©2022"); JLabel jlabel1 = new JLabel("作者:XG.孤梦"); JLabel jlabel2 = new JLabel("我的博客:https://www.xggm.top"); box.add(jlabel); box.add(Box.createVerticalStrut(10)); box.add(jlabel1); box.add(Box.createVerticalStrut(10)); box.add(jlabel2); jpanel.add(box); this.add(jpanel); } }运行效果:外挂后门(com.listener/MenuListener.java)可以在布雷完成之后就编写这个方法,目的为了方便测试,节省时间,点击外挂,就会将是雷的小方格图片替换成其他图片,比如弄成中间有个小黑点的小方格// 后门外挂方便测试 menuItemHole.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (Tools.isStart) { Tools.isHole = true; // 判断每一个雷块是否是雷 for (MineLabel[] mineLabel : BombJMenuBar.this.mainframe .getBombJPanel().getLabels()) { for (MineLabel m : mineLabel) { if (m.isMineTag()) { m.setIcon(Tools.hole); } } } } } });运行效果:最后一个Java实现扫雷项目就这样完成了。
2022年05月26日
390 阅读
0 评论
0 点赞
1
2
3
...
10