首页 > 编程语言 >Java学习之路--GUI编程03

Java学习之路--GUI编程03

时间:2023-09-20 18:34:38浏览次数:35  
标签:03 Java 鼠标 -- void import 窗口 public

package com.gui.lesson03;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

//2023.3.20 GUI编程 --键盘监听学习
public class TestKeyListener {
public static void main(String[] args) {
new KeyFrame();
}
}

//键盘监听类
class KeyFrame extends Frame{
public KeyFrame(){
setBounds(1,2,300,400);//设置这个窗口的大小和位置
setVisible(true);//设置可见性

//匿名内部类头
this.addKeyListener(new KeyAdapter() {

//键盘按下
@Override
public void keyPressed(KeyEvent e) {
//获得键盘下的键是哪一个
int keyCode = e.getKeyCode();//获得当前按下的键盘是哪一个--不需要去记住这个数值,直接使用静态属性VK_xxx
if (keyCode == KeyEvent.VK_UP){//VK_UP--上键,Ctrl + 鼠标右键进入keyEvent查看到VK_UP 的十六进制编码为
//public static final int VK_UP = 0x26; 0x26转化为10进制对应键盘上的38号键
System.out.println("你按下了上键!");
}
//根据按下不同操作,产生不同结果
}
});//匿名内部类尾
}
}

//
package com.gui.lesson03;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

//2023.3.20 GUI编程 --键盘监听学习
public class TestKeyListener {
public static void main(String[] args) {
new KeyFrame();
}
}

//键盘监听类
class KeyFrame extends Frame{
public KeyFrame(){
setBounds(1,2,300,400);//设置这个窗口的大小和位置
setVisible(true);//设置可见性

//匿名内部类头
this.addKeyListener(new KeyAdapter() {

//键盘按下
@Override
public void keyPressed(KeyEvent e) {
//获得键盘下的键是哪一个
int keyCode = e.getKeyCode();//获得当前按下的键盘是哪一个--不需要去记住这个数值,直接使用静态属性VK_xxx
if (keyCode == KeyEvent.VK_UP){//VK_UP--上键,Ctrl + 鼠标右键进入keyEvent查看到VK_UP 的十六进制编码为
//public static final int VK_UP = 0x26; 0x26转化为10进制对应键盘上的38号键
System.out.println("你按下了上键!");
}
//根据按下不同操作,产生不同结果
}
});//匿名内部类尾
}
}

//
package com.gui.lesson03;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

//2023.3.18 GUI编程 鼠标监听学习、模拟画图工具 MouseListener--鼠标监听事件
//生成一个窗口,添加画笔,设置鼠标监听,鼠标每次点击窗口都生成一个点
public class TestMouseListener {
public static void main(String[] args) {
new MyFrame("画图");//括号里写窗口的标题title名称
}
}

//自己的类
class MyFrame extends Frame{
//画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点

ArrayList points;

public MyFrame(String title){
super(title);//title --标题--这个窗口的名字
setBounds(200,200,400,300);

//存鼠标点击的点
points = new ArrayList<>();//new 一个集合来存储鼠标点击的产生的点

setVisible(true);//设置这个点可见

//鼠标监听器,正对这个窗口
this.addMouseListener(new MyMouseListener());
}

@Override
public void paint(Graphics g) {
//画画,需要监听鼠标的事件
Iterator iterator = points.iterator();//Iterator --迭代器
while (iterator.hasNext()){
Point point = (Point) iterator.next();//如果下一个点存在,则继续监听鼠标点
g.setColor(Color.BLUE);//设置点的颜色
g.fillOval(point.x,point.y,18,10);//得到这个点的x,y坐标
}
}

//适配器模式--系统里有的,原来开发人员写了封装好的
// private class MyMouseListener implements MouseListener{

////适配器模式--系统里有的,原来开发人员写了封装好的--这里我们自己写,不用
// @Override
// public void mouseClicked(MouseEvent e) {
//
// }
//
// @Override
// public void mousePressed(MouseEvent e) {
//
// }
//
// @Override
// public void mouseReleased(MouseEvent e) {
//
// }
//
// @Override
// public void mouseEntered(MouseEvent e) {
//
// }
//
// @Override
// public void mouseExited(MouseEvent e) {
//
// }
//添加一个点到界面上
public void addPaint(Point point){
points.add(point);

}
//适配器模式--这里我们继承MouseAdapter就行,MouseAdapter实现了MouseListener这个接口,这样写就不用上面每个方法都重写一遍了,这里面想要哪个就重写哪个
private class MyMouseListener extends MouseAdapter {
//鼠标 三种状况 --按下、弹起,按住不放

//mousePressed--鼠标按下
@Override
public void mousePressed(MouseEvent e) {
MyFrame frame = (MyFrame) e.getSource();//e.getSource()获取鼠标资源,这一句强转
//这里我们点击的鼠标时候就会在界面上产生一个点!画
frame.addPaint(new Point(e.getX(), e.getY()));//得到当前鼠标点的坐标--这个点就是鼠标的点--最后把得到的点添加到集合里

//每次点击鼠标都需要重新画一遍
frame.repaint();//repaint()--刷新重画
}
}
}
//
package com.gui.lesson03;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

//2023.3.18 GUI编程 鼠标监听学习、模拟画图工具 MouseListener--鼠标监听事件
//生成一个窗口,添加画笔,设置鼠标监听,鼠标每次点击窗口都生成一个点
public class TestMouseListener {
public static void main(String[] args) {
new MyFrame("画图");//括号里写窗口的标题title名称
}
}

//自己的类
class MyFrame extends Frame{
//画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点

ArrayList points;

public MyFrame(String title){
super(title);//title --标题--这个窗口的名字
setBounds(200,200,400,300);

//存鼠标点击的点
points = new ArrayList<>();//new 一个集合来存储鼠标点击的产生的点

setVisible(true);//设置这个点可见

//鼠标监听器,正对这个窗口
this.addMouseListener(new MyMouseListener());
}

@Override
public void paint(Graphics g) {
//画画,需要监听鼠标的事件
Iterator iterator = points.iterator();//Iterator --迭代器
while (iterator.hasNext()){
Point point = (Point) iterator.next();//如果下一个点存在,则继续监听鼠标点
g.setColor(Color.BLUE);//设置点的颜色
g.fillOval(point.x,point.y,18,10);//得到这个点的x,y坐标
}
}

//适配器模式--系统里有的,原来开发人员写了封装好的
// private class MyMouseListener implements MouseListener{

////适配器模式--系统里有的,原来开发人员写了封装好的--这里我们自己写,不用
// @Override
// public void mouseClicked(MouseEvent e) {
//
// }
//
// @Override
// public void mousePressed(MouseEvent e) {
//
// }
//
// @Override
// public void mouseReleased(MouseEvent e) {
//
// }
//
// @Override
// public void mouseEntered(MouseEvent e) {
//
// }
//
// @Override
// public void mouseExited(MouseEvent e) {
//
// }
//添加一个点到界面上
public void addPaint(Point point){
points.add(point);

}
//适配器模式--这里我们继承MouseAdapter就行,MouseAdapter实现了MouseListener这个接口,这样写就不用上面每个方法都重写一遍了,这里面想要哪个就重写哪个
private class MyMouseListener extends MouseAdapter {
//鼠标 三种状况 --按下、弹起,按住不放

//mousePressed--鼠标按下
@Override
public void mousePressed(MouseEvent e) {
MyFrame frame = (MyFrame) e.getSource();//e.getSource()获取鼠标资源,这一句强转
//这里我们点击的鼠标时候就会在界面上产生一个点!画
frame.addPaint(new Point(e.getX(), e.getY()));//得到当前鼠标点的坐标--这个点就是鼠标的点--最后把得到的点添加到集合里

//每次点击鼠标都需要重新画一遍
frame.repaint();//repaint()--刷新重画
}
}
}
//
package com.gui.lesson03;

import java.awt.*;

//2023.3.18 GUI编程-画笔学习 Paint--画笔
//Frame 里重写Paint()方法就行
public class TestPaint {
public static void main(String[] args) {
new MyPaint().loadFrame();
}
}

class MyPaint extends Frame{
public void loadFrame(){
setBounds(200,200,600,500);//设置大小
setVisible(true);
}
//画笔
@Override
public void paint(Graphics g) {
//super.paint(g);
//画笔需要有颜色,画笔可以画画
g.setColor(Color.red);//设置第一个画笔的颜色
g.drawOval(100,100,100,100);//drawOval--画空心圆,使用画笔画空心圆
g.fillOval(200,200,200,200);//fillOval--画实心圆

g.setColor(Color.green);//设置第二个画笔的颜色
g.fillRect(150,200,150,150);//fillRect--画实心矩形

//养成习惯,画笔用完,将他还原最初的颜色--将设置颜色的注释掉就行
}
}
//
package com.gui.lesson03;

import java.awt.*;

//2023.3.18 GUI编程-画笔学习 Paint--画笔
//Frame 里重写Paint()方法就行
public class TestPaint {
public static void main(String[] args) {
new MyPaint().loadFrame();
}
}

class MyPaint extends Frame{
public void loadFrame(){
setBounds(200,200,600,500);//设置大小
setVisible(true);
}
//画笔
@Override
public void paint(Graphics g) {
//super.paint(g);
//画笔需要有颜色,画笔可以画画
g.setColor(Color.red);//设置第一个画笔的颜色
g.drawOval(100,100,100,100);//drawOval--画空心圆,使用画笔画空心圆
g.fillOval(200,200,200,200);//fillOval--画实心圆

g.setColor(Color.green);//设置第二个画笔的颜色
g.fillRect(150,200,150,150);//fillRect--画实心矩形

//养成习惯,画笔用完,将他还原最初的颜色--将设置颜色的注释掉就行
}
}
//
package com.gui.lesson03;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//2023.3.19 GUi编程 --窗口监听学习
public class TestWindow {
public static void main(String[] args) {
new WindowFrame();
}
}

class WindowFrame extends Frame{
public WindowFrame() {
setBackground(Color.blue);//设置背景颜色为蓝色
setBounds(100,100,200,200);
setVisible(true);
// addWindowListener(new MyWindowListener());//这一句是内部类那段需要的,下面匿名内部类不用

this.addWindowListener(
//匿名内部类
new WindowAdapter() {

//关闭窗口
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口正在关闭中!");
// System.exit(0);//直接关闭窗口--不是隐藏,直接关闭掉了
}

//激活窗口
@Override
public void windowActivated(WindowEvent e) {
WindowFrame source = (WindowFrame) e.getSource();//1
source.setTitle("被激活了");//2 --1、2两句代码的添加相当于第一次窗口生成窗口是没有名称的,点击激活窗口设置了窗口的名称为“被激活了”
System.out.println("窗口激活");
}
}
);//匿名内部类尾
}
//
// //内部类--窗口监听类
// class MyWindowListener extends WindowAdapter{
// @Override
// public void windowClosing(WindowEvent e) {
// setVisible(false);//设置窗口隐藏--通过按钮隐藏窗口--窗口隐藏并不是关闭了窗口,实际窗口没有关闭,只是看不见了
// System.exit(0);//正常退出
// }
// } //上面使用了匿名内部类,这里注释的代码就可以不用了,实现的功能是一样的,但更推荐使用上面的
}
//
package com.gui.lesson03;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//2023.3.19 GUi编程 --窗口监听学习
public class TestWindow {
public static void main(String[] args) {
new WindowFrame();
}
}

class WindowFrame extends Frame{
public WindowFrame() {
setBackground(Color.blue);//设置背景颜色为蓝色
setBounds(100,100,200,200);
setVisible(true);
// addWindowListener(new MyWindowListener());//这一句是内部类那段需要的,下面匿名内部类不用

this.addWindowListener(
//匿名内部类
new WindowAdapter() {

//关闭窗口
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口正在关闭中!");
// System.exit(0);//直接关闭窗口--不是隐藏,直接关闭掉了
}

//激活窗口
@Override
public void windowActivated(WindowEvent e) {
WindowFrame source = (WindowFrame) e.getSource();//1
source.setTitle("被激活了");//2 --1、2两句代码的添加相当于第一次窗口生成窗口是没有名称的,点击激活窗口设置了窗口的名称为“被激活了”
System.out.println("窗口激活");
}
}
);//匿名内部类尾
}
//
// //内部类--窗口监听类
// class MyWindowListener extends WindowAdapter{
// @Override
// public void windowClosing(WindowEvent e) {
// setVisible(false);//设置窗口隐藏--通过按钮隐藏窗口--窗口隐藏并不是关闭了窗口,实际窗口没有关闭,只是看不见了
// System.exit(0);//正常退出
// }
// } //上面使用了匿名内部类,这里注释的代码就可以不用了,实现的功能是一样的,但更推荐使用上面的
}
//

标签:03,Java,鼠标,--,void,import,窗口,public
From: https://www.cnblogs.com/CaiDingChao/p/17718040.html

相关文章

  • [SpringSecurity5.6.2源码分析十二]:CsrfFilter
    前言• Csrf(跨站伪造请求):指的是用户在A网站认证完成后,A网站Cookie保存在了浏览器中,然后用户在B网站点击了钓鱼链接,使其让钓鱼请求带有了A网站的Cookie,从而让A网站认为这是一次正常的请求• 而SpringSecurity采用的是同步令牌模式(SynchronizerTokenPattern)来预防Csrf攻击•......
  • Java学习之路--GUI编程04
    packagecom.gui.lesson04;importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;//2023.3.21GUI编程--dialog(弹窗)学习publicclassDialogDemoextendsJFrame{publicDialogDemo(){this.setVisibl......
  • 宋忠平参访中馥集团,仓播突破一千万
    今日,媒体人/评论员/电商达人宋忠平参访中馥集团及中馥华东仓储中心,深入了解酒水销售全链路,对中馥集团专业直播运营团队、供应链团队、专业客服、物流团队等完善的服务团队,给予高度评价;深度感受中馥集团物流仓储在内的完善的售前、售中、售后服务体系给客户带来“贴心、专业、高效”......
  • 应用层-在IP网络中经常使用的应用层协议和服务包括哪些?主要提供哪些功能?对应的端口号
    1.TELNET远程登录主机,端口号TCP232.FTP文件传输协议。客户端首先连接到FTP服务器的TCP21端口,进行用户的认证,认证成功后,当我们要传输文件时,服务器会开一个端口为TCP20来进行传输数据文件。3.TFTP简单文件传输协议,FTP的简化版,端口号TCP694.NFS文件共享协议,让两种不同的文件......
  • 《算法的乐趣》高清高质量PDF 电子书 附源码
    本书从一系列有趣的生活实例出发,全面介绍了构造算法的基础方法及其广泛应用,生动地展现了算法的趣味性和实用性。全书分为两个部分,第一部分介绍了算法的概念、常用的算法结构以及实现方法,第二部分介绍了算法在各个领域的应用,如物理实验、计算机图形学、数字音频处理等。其中,既有各种......
  • 企业数据安全重要?私有化部署IM,保障信息安全无忧虑!
    随着企业对数据安全和隐私保护的要求日益提高,私有化部署的办公IM成为保护企业数据安全的重要选择。WorkPlus作为领先品牌,以其强大的私有化部署能力,成为公司换办公IM的首选。本文将重点介绍WorkPlus如何守护企业数据安全,并为企业打造高效的办公沟通与协作环境。一、私有化部署:守护企......
  • Java学习之路--GUI编程05
    packagecom.gui.lesson05;importjavax.swing.*;importjava.awt.*;importjava.net.URL;//2023.3.24GUI编程--Swing--JButton按钮学习publicclassJButtonDemo01extendsJFrame{publicJButtonDemo01(){Containercontainer=this.getContentPane();//Contain......
  • 谷歌优化里的cache: 搜索运算符
    cache: 运算符是可用于查找网页的缓存版本的搜索运算符。Google会生成缓存版本,以便在网站无法访问的情况下,用户仍可访问网页。cache: 运算符只能用于网页搜索。虽然Google缓存的目标受众群体是Google搜索用户,但它对网站创建者和开发者了解Google在将网页编入索引时看到的......
  • 谷歌优化里的图片搜索运算符
    与网页搜索类似,Google图片也支持专用的搜索运算符,即 src: 和 imagesize:。这些运算符仅适用于Google图片;它们对其他Google产品和服务不起作用。src: 搜索运算符src: 搜索运算符将返回在 src 属性中引用了运算符中提供的图片网址的网页。例如:src:https://example.com/me......
  • IDEA想要导入servletjar包却找不到
    在创建项目的时候,把web、tomcat都配置好后,在类中想要extendsHttpServlet却爆红找不到import的包 先打开file-->projectstructure-->Libraries 找到tomcat,lib下的servlet-api即可 ......