Java学习之路--GUI编程03

发布时间 2023-09-20 18:25:12作者: 寂灭无言
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);//正常退出
// }
// } //上面使用了匿名内部类,这里注释的代码就可以不用了,实现的功能是一样的,但更推荐使用上面的
}
//