当前位置: 首页 > news >正文

dom手表官方网站wordpress 用户身份判断

dom手表官方网站,wordpress 用户身份判断,一个页面对网站如何建设,建设网站公司【JAVA入门】Day17 - GUI 文章目录 【JAVA入门】Day17 - GUI一、组件二、事件 GUI 即图形化界面。 一、组件 一个 Java 的图形化界面项目主要用到了下面几种组件。 Java 中最外层的窗体叫做 JFrame。Java 中最上层的菜单叫做 JMenuBar。Java 中管理文字和图片的容器叫做 JLab…

【JAVA入门】Day17 - GUI


文章目录

  • 【JAVA入门】Day17 - GUI
  • 一、组件
  • 二、事件


        GUI 即图形化界面。

一、组件

        一个 Java 的图形化界面项目主要用到了下面几种组件。

  • Java 中最外层的窗体叫做 JFrame。
  • Java 中最上层的菜单叫做 JMenuBar。
  • Java 中管理文字和图片的容器叫做 JLabel。

【练习1】创建主界面1。

public class App {public static void main(String[] args) {//表示程序的启动入口//想要启动哪个界面,就创建它的对象new LoginJFrame();      //调用默认空参构造方法}
}
public class GameJFrame extends JFrame {//1.创建一个游戏的主界面//属性(宽 高)   行为 setSize setVisible//规定:GameJFrame 这个界面表示的是游戏的主界面public GameJFrame() {this.setSize(603, 680);this.setVisible(true);}
}
public class RegisterJFrame extends JFrame {//注册界面public RegisterJFrame() {this.setSize(488, 430);this.setVisible(true);}
}
public class LoginJFrame extends JFrame {//登录界面public LoginJFrame() {this.setSize(488, 430);this.setVisible(true);}
}

【练习2】设置 GameJFrame的相关方法。

 public GameJFrame() {//设置界面的宽高this.setSize(603, 680);//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置游戏的关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//让窗体显示出来,建议写在最后this.setVisible(true);}

【练习3】在 GameJFrame 窗体上方添加菜单。
在这里插入图片描述

 public GameJFrame() {//设置界面的宽高this.setSize(603, 680);//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置游戏的关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//初始化菜单//创建整个的菜单对象JMenuBar jMenuBar = new JMenuBar();//创建菜单上的两个选项的对象(功能   关于我们)JMenu functionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("关于我们");//创建选项下面的条目对象JMenuItem replayItem = new JMenuItem("重新游戏");JMenuItem reloginItem = new JMenuItem("重新登录");JMenuItem closeItem = new JMenuItem("关闭游戏");JMenuItem accountItem = new JMenuItem("公众号");//将每一个选项下的条目添加到选项当中functionJMenu.add(replayItem);functionJMenu.add(reloginItem);functionJMenu.add(closeItem);aboutJMenu.add(accountItem);//将菜单里的两个选项添加到菜单当中jMenuBar.add(functionJMenu);jMenuBar.add(aboutJMenu);//给整个界面设置菜单this.setJMenuBar(jMenuBar);//让窗体显示出来,建议写在最后this.setVisible(true);}

        将构造方法中的代码进行抽取,抽取到不同的方法中。

 public GameJFrame() {//初始化界面initJFrame();//初始化菜单initJMenuBar();//让窗体显示出来,建议写在最后this.setVisible(true);}private void initJMenuBar() {//初始化菜单//创建整个的菜单对象JMenuBar jMenuBar = new JMenuBar();//创建菜单上的两个选项的对象(功能   关于我们)JMenu functionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("关于我们");//创建选项下面的条目对象JMenuItem replayItem = new JMenuItem("重新游戏");JMenuItem reloginItem = new JMenuItem("重新登录");JMenuItem closeItem = new JMenuItem("关闭游戏");JMenuItem accountItem = new JMenuItem("公众号");//将每一个选项下的条目添加到选项当中functionJMenu.add(replayItem);functionJMenu.add(reloginItem);functionJMenu.add(closeItem);aboutJMenu.add(accountItem);//将菜单里的两个选项添加到菜单当中jMenuBar.add(functionJMenu);jMenuBar.add(aboutJMenu);//给整个界面设置菜单this.setJMenuBar(jMenuBar);}private void initJFrame() {//设置界面的宽高this.setSize(603, 680);//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置游戏的关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}

【练习4】添加图片。

 private void initImage() {//创建一个图片ImageIcon的对象ImageIcon icon = new ImageIcon("D:\\IdeaProjects\\PuzzleGame\\image\\daxiaoqiao\\1.jpg");//创建一个JLabel的对象(管理容器)JLabel jLabel = new JLabel(icon);//把管理容器添加到界面中this.add(jLabel);}

        注意:窗体和图片之间其实还有一个隐藏的容器(布局方式容器),这个容器可以用 getContentPane() 来获取,我们添加的图片,实质上是添加进了这个容器当中,如果没有设定这个容器的特殊要求,它会默认把图片放到居中位置。如果不想将图片放到正中央,就需要把这个默认机制取消掉,我们可以使用 setLayout(null) 来实现。

  //在JFrame的初始化方法中//取消掉默认居中布局this.setLayout(null);
    private void initImage() {//创建一个图片ImageIcon的对象ImageIcon icon = new ImageIcon("D:\\IdeaProjects\\PuzzleGame\\image\\daxiaoqiao\\1.jpg");//创建一个JLabel的对象(管理容器)JLabel jLabel = new JLabel(icon);//指定图片位置jLabel.setBounds(0, 0, 105, 105);//把管理容器添加到布局容器中this.getContentPane().add(jLabel);}

【练习5】打乱一维数组中的数据。
需求:把一个一维数组中的数据:0~15打乱顺序,然后再以4个一组的方式添加到二维数组中。

package test;import java.util.Random;public class RandomTest {public static void main(String[] args) {int[] tempArr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};Random r = new Random();for(int i = 0; i < tempArr.length; i++) {//获取随机索引int index = r.nextInt(tempArr.length);int temp = 0;//交换两个索引上的数据temp = tempArr[i];tempArr[i] = tempArr[index];tempArr[index] = temp;//遍历数组System.out.print(tempArr[i]+" ");}System.out.println();//创建一个二维数组int[][] data = new int[4][4];//给二维数组添加数据//遍历tempArr每一个元素,把每一个元素依次添加到二维数组中for (int i = 0; i < tempArr.length; i++) {data[i / 4][i % 4] = tempArr[i];}//遍历二维数组for(int i = 0 ;i < 4; i++) {for(int j = 0; j < 4; j++) {System.out.print(data[i][j] + " ");}System.out.println();}}
}

【练习6】打乱图片。

 private void initData() {int[] tempArr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};Random r = new Random();for(int i = 0; i < tempArr.length; i++) {//获取随机索引int index = r.nextInt(tempArr.length);//交换两个索引上的数据int temp = tempArr[i];tempArr[i] = tempArr[index];tempArr[index] = temp;}//给二维数组添加数据//遍历tempArr每一个元素,把每一个元素依次添加到二维数组中for (int i = 0; i < tempArr.length; i++) {data[i / 4][i % 4] = tempArr[i];        //巧妙运用数学知识,一行完成二维数组元素的添加}}
  private void initImage() {for(int i = 0 ; i < 4; i++){for (int j = 0; j < 4; j++) {//创建一个图片ImageIcon的对象ImageIcon icon = new ImageIcon("D:\\IdeaProjects\\PuzzleGame\\image\\daxiaoqiao\\" + data[i][j] + ".jpg");//创建一个JLabel的对象(管理容器)JLabel jLabel = new JLabel(icon);//指定图片位置jLabel.setBounds(105 * j, 105 * i + 4, 105, 105);//把管理容器添加到界面中this.getContentPane().add(jLabel);}}

在这里插入图片描述

二、事件

        事件,就是可以被组件识别的操作。当你对组件做了某种事情后,就会执行相应的代码。
        GUI 中的事件源可以是按钮、图片、窗体等等控件。
        鼠标点击、鼠标划入等等操作都统称为事件
        当事件源上发生了某个事件,则执行某段代码,这个行为叫做绑定监听

  • KeyListner                键盘监听
  • MouseListener         鼠标监听
  • ActionListener          动作监听

【练习7】写一个按钮的事件监听。
        按钮用 JButton 类创建。事件监听需要导包,导入 ActionEvent 和 ActionListener。

package test;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class EventTest {public static void main(String[] args) {JFrame jFrame = new JFrame();//设置界面宽高jFrame.setSize(603, 680);//设置界面标题jFrame.setTitle("事件演示");//设置界面置顶jFrame.setAlwaysOnTop(true);//设置界面居中jFrame.setLocationRelativeTo(null);//设置关闭模式jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消组件默认居中放置jFrame.setLayout(null);//创建一个按钮对象JButton jbt = new JButton("点我");//设置按钮位置和宽高jbt.setBounds(0,0,100,50);//给按钮添加动作监听//jbt:组件对象,表示要给哪个组件添加事件//addActionListener:表示我要给组件添加哪个事件监听(动作监听包括两种:鼠标左键点击,空格按下)//()中应该传入一个接口的实现类对象,该对象是ActionListener的对象,可以用匿名内部类作为参数//该参数表示:事件被触发后要执行的代码jbt.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被点击了");}});//把按钮添加入窗体jFrame.getContentPane().add(jbt);//显示窗体jFrame.setVisible(true);}
}

        事件监听还有另一种写法,可以让当前界面去实现 ActionListener 接口。
        写一个窗体实现 ActionListener 接口。

package test;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;public class MyJFrame extends JFrame implements ActionListener {//创建2个按钮,必须在成员位置JButton jbt1 = new JButton("点我!");JButton jbt2 = new JButton("点我。");//构造方法MyJFrame() {this.setSize(600,600);//设置界面的标题this.setTitle("登录");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置窗口的关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗口的Layoutthis.setLayout(null);//设置按钮位置大小jbt1.setBounds(0,0,100,50);jbt2.setBounds(202,0,100,50);//给按钮添加事件//因为当前类实现了ActionListener接口,所以该类本身对象即可作为参数反传递给addActionListener()方法jbt1.addActionListener(this);jbt2.addActionListener(this);//把按钮添加到窗口中this.getContentPane().add(jbt1);this.getContentPane().add(jbt2);//显示窗体this.setVisible(true);}//实现ActionListener接口,重写actionPerformed方法@Overridepublic void actionPerformed(ActionEvent e) {//对当前的按钮进行判断//获取当前被操作的那个按钮对象Object source = e.getSource();if(source == jbt1) {jbt1.setSize(200,200);System.out.println("按钮1被按下");}else{Random r = new Random();jbt2.setLocation(r.nextInt(500),r.nextInt(500));System.out.println("按钮2被按下");}}
}

        测试类用来创建窗口。

package test;public class EventTest2 {public static void main(String[] args) {MyJFrame myJFrame = new MyJFrame();}
}
http://www.yayakq.cn/news/780574/

相关文章:

  • 网站需求分析问题东莞重大项目建设
  • 湖北强涛建设工程有限公司网站做废旧哪个网站好
  • 网站seo优化主要有哪些手段wordpress迁移跳转原网站
  • 南昌网站建设网站推广外贸网站建设销售常用语
  • 建设网站需要什么证件网站建设及报价格方案
  • 拖拽式网站建设源码自己做网站建设制作
  • 东省住房和城乡建设厅网站佛山刚刚发生的事
  • 自己做的网站怎么设置文件下载磁力宝
  • 仿租号网站源码网站开发网站建设与维护书
  • 网站域名不备案吗如何修改wordpress头部信息
  • 网站设计 趋势网站做nat映射需要哪些端口
  • 网站平台建设所需开发工具企业展厅策划设计公司排名
  • 谷歌seo服务商seo和sem是什么意思
  • 电子商务网站设计实践报告网站做接口怎么做
  • 学校网站网页模板电子商务网站业务流程分析
  • 网站建设与网页设计实践报告南昌网站建设冲浪者科技
  • 网站原型是以下哪层设计的结果国外网站做任务套利
  • python做网站吗做网站排名推广效果怎么样
  • 郑州专业网站制作费用报价百度品牌广告
  • 商务网站建设方案沈阳营销型网站建设
  • 浙江省建设监理协会官方网站做网站大概要多少钱
  • 合肥网站开发公司建设网站个人网上银行
  • 使用iis6搭建网站近三年网络营销案例
  • 潍坊尚呈网站建设公司 概况wordpress上传大图
  • h5做网站什么软件医院网站建设招标公告
  • 电子商务网站建设定义项目管理软件开发案例
  • 做网站页面用什么注册公司注册地址怎么弄
  • 做电影网站的资源从哪里换擦彩网站开发
  • 天天联盟广告网站如何做长沙互联网公司在哪个区
  • 手机网站个人中心源码成华区微信网站建设推广