大家好哇,我是灰小猿! 今天来和大家总结一下有关在进行Java的GUI编程时常用的事件监听函数的基本作用和功能。...在Java中常用的两种事件监听器是“动作事件监听器”和“焦点事件监听器”。接下来我和大家分别分享一下这两种常用的事件监听机制。...在对某一个控件进行动作事件监听的时候,一定要使用addActionListener()方法为该控件添加事件监听,否则就算对该控件写了触发事件,在没有为该控件添加监听时,单击该控件也还是没有用的。...,如使用焦点事件监听器可以用于:当光标离开某一个事件源时触发某个事件的响应,或将焦点返回给该事件源。...在使用焦点事件监听器时,需要注意以下几点: 使用该监听器需要实现FocusListener接口 该接口中重写的focusLost()方法是在组件失去焦点时调用的。
当暂时丢失焦点的组件的另一个操作,比如释放Window或拖动滚动条的间接结果一时焦点变化的事件发生。...例如,当窗口失去焦点时,会发生一个临时的焦点丢失事件。临时获得焦点的事件发生在弹出菜单上。 ?...请注意,当焦点从一个组件更改为另一个组件时,第一个组件将触发焦点丢失事件,第二个组件将触发焦点获得事件。 从组合框的菜单中选择一个选项。再次单击组合框。请注意,没有报告焦点事件。...只要用户操作相同的组件,焦点就会停留在该组件上。 单击打印焦点事件的文本区域。什么也没有发生,因为使用setRequestFocusEnabled(false)使文本区域不可点击。...该演示通过在文本区域上调用setRequestFocusEnabled(false)来禁用文本区域的单击焦点,同时保留其选项卡焦点功能。
,而是为其他边框设置标题,创建该类的对象时,需要传入一个其他的Border对象; ComoundBorder:用来组合其他两个边框,创建该类的对象时,需要传入其他两个Border对象,一个作为内边框,一个座位外边框...与 FileDialog 不同的是 , JFileChooser 无须依赖于本地平台的 GUI , 它由 100%纯 Java 实现 , 在所有平台 上具有完全相同的行为,并可以在所有平台上具有相同的外观风格...对 showConfirmDialog 所产生的对话框,有如下几个返回值: YES OPTION: 用户 单击了 "是"按钮后返回 。 NO OPTION: 用 户单击了"否"按钮后返回 。...CANCEL OPTION: 用户单击了"取消"按钮后返回 。 OK OPTION : 用户单击了"确定"按钮后返回 。...CLOSED OPTION: 用户 单击了对话框右上角的 " x" 按钮后返回。
在本文中,将展示一种方法,该方法允许使用JxBrowser的功能在不同 PC 上运行的两个 Java 应用程序之间实现屏幕共享。...第一个是带有按钮的窗口。单击该按钮开始共享会话。第二个应用程序自动接收视频流并显示它。还有一个停止屏幕共享的按钮。...当流媒体开始捕获时,我们将其屏幕视图作为视频流接收。为了显示它,我们在接收器端使用内置的 HTML5 视频播放器。打开两个浏览器窗口查看是否正常。该项目的源代码可在GitHub 上获得。...streamer.html,可以在单击按钮时直接从 Java 开始屏幕共享:JButton startSharingButton = new JButton("Share your screen");startSharingButton.addActionListener...结论在本文中,展示了如何在一个 Java 应用程序中共享屏幕并使用 JxBrowser 在另一个应用程序中显示它。 我创建了一个可以共享屏幕的简单 JavaScript 应用程序。
默认情况下,组件的文本以一种字体和颜色显示,并且全部显示在一行上。 可以分别通过调用组件的setFont和setForeground方法来确定组件文本的字体和颜色。...JFrame frame = new JFrame("HtmlDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);...: 单击启动按钮以使用Java™Web Start运行HtmlDemo(下载JDK 7或更高版本)。...在左侧的文本区域中编辑HTML格式,然后单击“更改标签”按钮。右边的标签显示结果。 从左侧的文本区域中删除html标签。标签的文本不再解析为HTML。...还请注意,当禁用按钮时,不幸的是,其HTML文本将保持黑色,而不是变为灰色。 (请参阅错误#4783068,以查看这种情况是否发生了变化。) 本节讨论了如何在普通的非文本组件中使用HTML。
方法名称 概述 getContentPane() 返回此窗体的 contentPane 对象 getDefaultCloseOperation() 返回用户在此窗体上单击“关闭”按钮时执行的操作 setContentPane...(Container contentPane) 设置 contentPane 属性 setDefaultCloseOperation(int operation) 设置用户在此窗体上单击“关闭”按钮时默认执行的操作...) 设置按钮的键盘快捷键,所设置的快捷键在实际操作时需要结合 Alt 键进行实现 void setPressedIcon(Icon icon) 设置按下按钮时的图标 void setSelectedIcon...(Icon icon) 设置选择按鈕时的图标 void setRolloveiicon(Icon icon) 设置鼠标移动到按扭区域时的图标 void setDisabledIcon(Icon icon...) 设置图标和文本的水平对齐方式 void setEnable(boolean flag) 启用或禁用按扭 void setVerticalTextPosition(int textPosition)
大家好,又见面了,我是全栈君。...说明: 由于个人精力有限,现将部分研究的代码开源出来, 代码或思路有部分来源于网络,有些代码还没来得及整理, 如果您对这其中的部分代码、思路整理出了一些文档,希望您能够联系我,分享您的成果 我将在下一版中更新您提供的一些文档...,让它初始化为普通状态 private Point hiddenPoint; // 隐藏窗体时,窗体的位置 private Point visiblePoint; // 窗体处于显示状态时的位置...因为我们可以加大它的Insets以提高鼠标进入和离开的灵敏度 frame.addWindowFocusListener(this); // 注册一个焦点侦听器到窗体上...frame.moveToHidden(); } } public void windowGainedFocus(WindowEvent e) { // 得到焦点检查鼠标是不是在窗体上
83、虽然Java 在程序结束时自动关闭所有打开的流,但是当我们使用完流后,显式地关闭 任何打开的流仍是一个良好的习惯。...97、Java中JFrame类的 setTitle 方法是用来设置窗口的名字。 98、JFrame类创建的对象是一个窗口容器,它默认布局是 BorderLayout 布局。...107、使用 CardLayout 布局的容器可以容纳多个组件,但实际上同一时刻容器只能从这些组件中选出一个来显示。...110、当用户与GUI 交互,比如移动鼠标、按下鼠标键、单击Button 按钮、在文本框内输入文本、选择菜单项或者关闭窗口时,GUI 会接受到相应的事件 。...113、只要用户单击JButton,就会触发一个ActionEvent 事件,该事件被监听器接收,它的方法 actionPerformed() 被执行。
X int[] snakeX = new int[600]; //蛇的坐标 Y int[] snakeY = new int[500]; // R:右,L:左,U:上,...//游戏分数 int score; //构造方法 public GamePanel(){ //初始化 init(); //获取焦点事件...//第一个身体坐标 snakeX[1] = 75; snakeY[1] = 100; //第二个身体坐标 snakeX[2] = 50;...e) { //如果游戏处于开始状态,并且没有结束,则小蛇可以移动 if (isStart && isFail==false){ //右移:即让后一个移到前一个的位置即可...snakeY[0]+25; if (snakeY[0]>650) snakeY[0] = 75; } //吃食物:当蛇的头和食物一样时
但由于以上三个方法之间没有数据依赖关系,所以执行方式由串行调整为并行后,能够达到性能提升的效果。如果方法之间存在依赖关系时,那么提升效果是否还会如此明显,并且如果确保它们的执行循序。...,坐标(X : 130,Y : 120) 由打印的内容可知,我们鼠标点击并不是main的主线程来执行的,说明它是一个异步的Callback,而且是非阻塞的,当我们点击鼠标产生鼠标事件时,没有任何线程会阻塞该线程的执行...当我们关闭窗口的时候,会打印如下内容 [线程 : AWT-EventQueue-0] 清除 jFrame... [线程 : AWT-EventQueue-0] 退出程序......该方法不得不等待任务执行完成,换言之,如果多个任务提交后,返回多个Future逐一调用get()方法时,将会依次blocking,任务的执行从并行变成串行。...,相比于ParalleDataLoader的并行执行,只需要3秒完成来说,非阻塞的好处是让主方法线程及时完成,让主方法线程池可以及时释放。
大家好,又见面了,我是你们的朋友全栈君。...javaws通常web开启的时候的进程。 jvm.dll jvm.dll是一个java虚拟机在windows平台环境上的实现,也是JRE的一部分,一个C程序能够使用jvm.dll直接运行在jvm上。...classes的时候,它运行。...javaw.exe javaw.exe是相似的和java.exe 是一个win32的GUI应用,应用提供自己的GUI窗口,不启用控制台。 因此我们想运行一个GUI程序不需要命令控制台。...代表把classpath 的路径设置为当前目录。 运行后查看任务管理器出现了 java.exe进程 —— 因为这是通过控制台运行的。
JDialog窗体的功能是从一个窗体中弹出另一个窗体,就像是在使用IE浏览器时弹出的确定对话框一样。...标签由JLabel类定义,它的父类为JComponent类。...12.3.2 图标的使用 Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。...ipadx修改组件的宽度,ipady用来修改组件的高度。如果为正数,则在首选大小的基础上增加指定的宽度和高度;如果为负数,则在首选大小的基础上减小指定的宽度和高度。...ActionListener() { @Override public void actionPerformed(ActionEvent e) { jb.setText("我被单击了
大家好,又见面了,我是你们的朋友全栈君。...GridBagLayout是一个灵活的布局管理器,部件如果想加入其中需借助GridBagConstraints,其中有若干个参数,解释如下: gridx/gridy:组件的横纵坐标 gridwidth...ipady:组件间的纵向间距 insets:当组件不能填满其格时,通过 insets来指定四周(即上下左右)所留空隙 anchor:同样是当组件不能填满其格时,通过 anchor来设置组件的位置...insets —— 设置组件之间彼此的间距。 它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。 ipadx,ipady —— 设置组件间距,默认值为0。...GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置 好了之后,必须new一个GridBagConstraints
大家好,又见面了,我是你们的朋友全栈君。 本实例使用随机数字生成5位抽奖号码,并显示在窗体的5个文本框中。当用户单击”开始”按钮时,将启动一个线程对象为5个文本框生成随机数字。...单击”抽奖”按钮时,线程对象停止运行,并且将准确的中奖号码显示在信息文本框中。 开发一个抽奖小工具的实例。 (1)自定义文本框组件,把5个生成随机数的文本框的公共属性抽象定义到该文本框。...SwingConstants.CENTER); //设置文本居中对齐 setFont(numfont); //设置字体 setFocusable(false); //取消焦点...=null) //如果存在上一个线程对象 randomThread.stopLottery(); //停止它 randomThread=new RandomNum(); //创建新的线程对象 randomThread.start...=null) //如果存在线程对象 randomThread.stopLottery(); //停止它 try { randomThread.join(); //等抽奖线程结束 } catch (
解决方案 1 内容面板 所有组件都要布置在窗体的内容面板上,而登录模块的内容面板使用了背景图片来美化窗体界面,这就需要继承Swing的JPanel类来编写自己的面板类,然后将该面板类作为窗体的内容面板。...super.paintComponent(g); g.drawimage(img,0,0,this); // 以左上角为起点 } } 2 登录窗体 创建LoginDialog类,该类继承JFrame...catch(Exception e1){ e1.printStackTrace(); } // 显示主窗体...在系统登录窗体的密码文本框中添加了按键事件监听器,它在获取到密码文本框输入的回车字符时将执行登录事件。...此过程与单击登录按钮具有相同的作用。也就是说,输完密码后,用敲回车代替单击登录按钮。
二、基本要求 实现一个功能简单的学生信息管理系统,该系统具有按照账户名密码登录功能,登录后,可以添加,删除,修改、查询(显示学生相片)学生信息,添加学生信息时,要求能添加学生的相片信息(实现相片文件的上传和下载功能...X时结束程序 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置JFrame可见 jf.setVisible(true); } public...“查询”按钮进行刷新,显示出修改后的信息,如下图所示: 5、删除 (1)在学生信息管理系统界面选中某一学生记录,单击“删除”按钮,弹出删除确认界面。...虽然这是一个小项目,但是能把它做好也是有很大的满足感。虽然一开始遇到很多问题,但自己都咬牙克服、迎难而上,每天都在钻研程序,然后将自己的思想与同学们交流。...,这篇博客就是该课设设计的报告,需要源码的同学可以关注博主的公众号《萌新加油站》,回复:java学生系统,即可获得源码学习。
当执行一个线程程序时,就自动产生一个线程,主方法正是在这个线程上运行的,当不再启动其他线程时,该程序就为单线程程序。主方法线程启动由Java虚拟机负责,程序员负责启动自己的线程。...17.3 线程的生命周期 出生状态就是线程被创建时处于的状态,在用户使用该线程实例调用start()方法之前线程都处于出生状态;当用户调用start()方法后,线程处于就绪状态(又称为可执行状态),当线程得到系统资源后就进入运行状态...当线程的run()方法执行完毕时,线程进入死亡状态。 虽然多线程看起来像同时进行,但事实上在同一时间点上只有一个线程被执行,只是线程之间切换较快,所以才会使人产生线程是同时进行的假象。...(width, height); frame.setVisible(true); } } 17.4.4 线程的礼让 Thread类中提供了一种礼让方法,使用yield()方法表示,它只是给当前正处于运行状态的线程一个提醒...以火车站售票系统为例,在代码中判断当前票数是否大于0,如果大于0则执行将该票出售给乘客的功能,但当两个线程同时访问这段代码时(假如这时只剩下一张票),第一个线程将票售出,与此同时第二个线程也已经执行完成判断是否有票的操作
✨博主:命运之光 ✨专栏:Java经典程序设计 520表白日,每个人都期待着浪漫的表白,而作为一名热爱编程的程序员,我决定用程序员的方式来向你表达我的爱意。...在这一天,许多人会选择向心仪的人表白或者向自己的伴侣表达爱意。 数字的象征性:数字"520"具有象征性,代表着爱意和浪漫。它成为了人们用于表达爱意和吸引他人关注的独特符号。...总的来说,"520"作为表白日具有浪漫和特殊的意义。它提醒人们在这个特别的日子里关注爱情、表达情感,并创造美好的回忆。无论是通过言语、行动还是通过编程,"520"是一个适合向心爱的人表白爱意的日子。...btnok2.setFont(f); btnok2.setBounds(100,300,120,50);//170 p.add(btnok2); //创建第二个取消的按钮组件...action4 action3 =new action4();//创建事件对象,这个是点击我同意时候的对象 //点击我不同意时跳出新的窗口 btnok3
void setPrice(int price) { this.price = price; } } Scanner基本使用 文本扫描程序,可以获取基本类型数据和字符串数据 当我们需要从控制台或文件中读取输入时...下面介绍几个常用 的方法: next(): 读取并返回输入中的下一个字符串,遇到空格或换行符时停止读取。 nextInt(): 读取并返回输入中的下一个整数。...System.out.println("请输入第一个数字:"); int First=sc.nextInt(); System.out.println("请输入第二个数字...,该图形表示可以显示在屏幕上并且可以和 用户交互 JFrame 一个顶层窗口 构造方法 JFrame():构造一个最初不可见的窗体 成员方法 void setVisible(...120,100,150,20); jf.add(numberFiled); //猜数字按钮 JButton guessButton=new JButton("我猜
大家好,又见面了,我是你们的朋友全栈君。...);//设置按x后的操作....);//设置按x后的操作....:第一个是菜单项名字,第二个是菜单项图标 /** * 创建一个带菜单条,菜单项,子菜单的窗口 */ public class MainForm extends JFrame {...即通过选项卡可以切换不同的组件(也可以是子面板JPanel),相当于,第一个选项卡点击 显示第一个界面,第二个选项卡点击,不开新窗口,就在该窗口上显示第二个界面。
领取专属 10元无门槛券
手把手带您无忧上云