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

GUI学习——day3

画笔

package com.kuang.lesson03; import java.awt.*; public class TestPaint { public static void main(String[] args) { new MyPaint().loadFrame(); } } class MyPaint extends Frame { public void loadFrame() { setBounds(200,200,600,400); setVisible(true); } //画笔 @Override public void paint(Graphics g) { //画笔需要有颜色,画笔可以画画 //g.setColor(Color.red) //g.drawOval(100,100,100,100) //空心圆 g.fillOval(100,100,100,100);//实心圆 //g.setColor(Color.GREEN); g.fillRect(150,200,200,200); //养成习惯,画笔用完,将他还原到最初的颜色 } }

鼠标监听

目的:想要实现鼠标画画

代码思路

package com.kuang.lesson03; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Iterator; //鼠标监听事件 public class TestMouseListener { public static void main(String[] args) { new MyFrame("画图"); } } //自己的类 class MyFrame extends Frame{ //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点 ArrayList points; public MyFrame(String title) { super(title); setBounds(200,200,400,300); //存鼠标的点 points = new ArrayList<>(); //鼠标监听器 this.addMouseListener(new MyMouseListener()); setVisible(true); } @Override public void paint(Graphics g) { //画画,监听鼠标的事件 Iterator iterator = points.iterator(); while (iterator.hasNext()){ Point point = (Point)iterator.next(); g.setColor(Color.red); g.fillOval(point.x , point.y,10,10); } } //添加一个点到界面上 public void addPoint(Point point){ points.add(point); } //适配器模式 private class MyMouseListener extends MouseAdapter { //鼠标 按下,弹起,按住不放 @Override public void mousePressed(MouseEvent e){ MyFrame myFrame = (MyFrame) e.getSource(); //这里我们点击的时候,就会在界面上产生一个点! //这个点就是鼠标的点 myFrame.addPoint(new Point(e.getX(),e.getY())); //每次点击鼠标都需要重新画一遍 myFrame.repaint();//刷新 } } }

窗口监听

package com.kuang.lesson03; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; 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 WindowAdapter() {}); this.addWindowListener( //匿名内部类 new WindowAdapter() { //关闭窗口 @Override public void windowOpened(WindowEvent e) { System.out.println("windowOpened"); } //激活窗口 @Override public void windowClosing(WindowEvent e) { WindowFrame source = (WindowFrame) e.getSource(); source.setTitle("被激活了"); System.out.println("windowClosing"); } } ); } }

键盘监听

package com.kuang.lesson03; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; //键盘 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(); System.out.println(keyCode); if (keyCode == KeyEvent.VK_UP){ System.out.println("你按下了上键"); } //根据按下的不同操作,产生不同效果 } }); } }

Swing

窗口、面板

package com.kuang.lesson04; import javax.swing.*; import java.awt.*; public class JFrameDemo { //init():初始化 public void init(){ //顶级窗口 JFrame jf = new JFrame("这是一个JFrame窗口"); jf.setVisible(true); jf.setBounds(100,100,200,200); jf.setBackground(Color.cyan); //设置文字 Jlabel JLabel label = new JLabel("欢迎来到狂神说Java系列节目"); jf.add(label); //关闭事件 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { //建立一个窗口 new JFrameDemo().init(); } }

标签居中

package com.kuang.lesson04; import javax.swing.*; import java.awt.*; public class JframeDemo02 { public static void main(String[] args) { new MyJFrame().init(); } } class MyJFrame extends JFrame { public void init(){ this.setBounds(10,10,200,300); this.setVisible(true); JLabel label = new JLabel("欢迎来到狂神说Java系列节目"); this.add(label); //让文本标签居中 设置水平对齐 label.setHorizontalAlignment(SwingConstants.CENTER); this.setContentPane(label); //获得一个容器 Container container = this.getContentPane(); container.setBackground(Color.red); } }

弹窗

JDialog,用来被弹出

package com.kuang.lesson04; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //主窗口 public class DialogDemo extends JFrame { public DialogDemo() { this.setVisible(true); this.setSize(700,500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //JFrame 放东西,容器 Container container = this.getContentPane(); //绝对布局 container.setLayout(null); //按钮 JButton button = new JButton("点击弹出一个对话框");//创建 button.setBounds(30,30,200,50); //点击这个按钮的时候,弹出一个躺窗 button.addActionListener(new ActionListener() { //监听器 @Override public void actionPerformed(ActionEvent e){ //弹窗 new MyDialogDemo(); } }); container.add(button); } public static void main(String[] args) { new DialogDemo(); } } //弹窗的窗口 class MyDialogDemo extends JDialog { public MyDialogDemo() { this.setVisible(true); this.setBounds(100,100,500,500); Container container = this.getContentPane(); container.setLayout(null); container.add(new JLabel("学Java")); } }
http://www.jsqmd.com/news/450344/

相关文章:

  • 基于vue+nodejs的大学生实习招聘系统
  • vue基于nodejs的电子外设销售商城系统
  • 工程设计类学习(DAY13):SMT红胶制程:电子制造的工艺奥秘
  • 动环监控的优势是什么?它如何助力机房运维管理的智能化升级?
  • 科研党收藏!巅峰之作的降AIGC平台 —— 千笔·专业降AIGC智能体
  • 浏览器内浏览器钓鱼攻击的演进机制与防御策略研究——基于Facebook BitB案例的实证分析
  • 2026年江西抖音短视频代运营5强推荐榜单发布 - 精选优质企业推荐榜
  • [特殊字符] 免费!用 Windows11+飞书+Qwen网页版,10分钟搭建你的 OpenClaw 小龙虾智能体
  • VLA 动作序列生成深度解析
  • 实测才敢推 9个降AI率平台测评对比,专科生必看的降AI率神器
  • 2026年湖南抖音短视频代运营公司排行榜TOP5公布 - 精选优质企业推荐榜
  • 完整、结构化的复杂 Agent 系统模板
  • Python+ai技术的微信小程序 同城社区蔬菜配送 骑手抢单 商家
  • 基于遗传算法优化的BP神经网络分类实现(MATLAB)
  • 【Kubernetes(1)】Kubernetes 架构与核心组件详解:管理者(Control Plane)与工作节点(Worker Nodes)的概念与协作
  • C#上位机工业数据全方案:数据库对接+报表生成+MES系统联动,满足ISO生产追溯合规要求
  • 「Win」Windows 之 RegisterClassEx 注册窗口类
  • 2026年贵州抖音短视频代运营公司排行榜发布 - 精选优质企业推荐榜
  • 【2026年最新600套毕设项目分享】springboot教师听评课管理系统(14075)
  • 全栈 AI 开发版本控制深度解析
  • vue基于nodejs的线上超市购物管理系统
  • 【架构心法】把多线程踢出通信底层!从多通道同步控制实战,解构极简高可靠的 ACK 重传状态机
  • 基于微信公众平台的点餐系统的设计与实现
  • LeeCode HOT 100 141.环形链表
  • 车载电源定制行业口碑标杆企业排行,高功率密度电源/电源模块/新能源车载逆变电源,车载电源生产直销口碑推荐榜 - 品牌推荐师
  • 机房技术人员必备:不同规模机房的UPS不间断电源选型全攻略
  • C盘空间不足怎么清理?2026年最新手把手教程与工具盘点
  • 【Svelte】事件管理
  • 融智学理论总纲——从核心公式到四维模型
  • 如何选择合适的单北斗GNSS厂家进行变形监测?