首页 > 编程语言 >GUI编程Day02

GUI编程Day02

时间:2024-09-23 21:25:18浏览次数:8  
标签:java Day02 GUI 编程 void import new 100 public

画笔

package com.dongfang.lesson03;

import java.awt.*;
import java.util.Date;

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) {
        //super.paint(g);
        //画笔  需要有颜色  可以画画
        g.setColor(Color.BLUE);
        g.drawOval(100,100,100,100);//空心圆
        g.fillOval(300,300,100,100);//实心圆

        g.setColor(Color.RED);
        g.fillRect(100,300,100,100);
        
        //养成习惯  画笔用完  将它还原到最初的颜色
    }
}

鼠标监听

目的:实现鼠标画画

  • 鼠标监听事件----->存点的集合

  • 鼠标监听事件----->画笔----->画板

package com.dongfang.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<>();

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

    @Override
    public void paint(Graphics g) {
        //画画需要监听鼠标的事件
        Iterator iterator = points.iterator();
        while(iterator.hasNext()){
            Point point = (Point)iterator.next();
            g.setColor(Color.CYAN);
            g.fillOval(point.x,point.y,10,10);
        }
    }

    //添加一个点到界面上
    public void addPaint(Point point){
        points.add(point);
    }

    //适配器模式
    private class MyMouseListener extends MouseAdapter {
        //鼠标  按下  弹起  按住不放
        @Override
        public void mousePressed(MouseEvent e) {//e代表当前的鼠标
            MyFrame frame = (MyFrame) e.getSource();
            //点击的时候,就会在界面上产生一个点
            //这个点就是鼠标的点
            frame.addPaint(new Point(e.getX(),e.getY()));

            //每次点击鼠标都要重新画一遍
            frame.repaint();//刷新
        }
    }
}

窗口监听

package com.dongfang.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 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();
                source.setTitle("激活的窗口");
                System.out.println("激活");
            }
        });
    }

    class MyWindowListener extends WindowAdapter {
        @Override
        public void windowClosing(WindowEvent e) {
            setVisible(false);//隐藏窗口  通过按钮隐藏窗口
            System.exit(0);//0正常退出  1非正常退出
        }
    }
}

键盘监听

package com.dongfang.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);//按键的码  不需要去记录这个数值  直接使用静态属性VK_XX
                if (keyCode == KeyEvent.VK_UP){
                    System.out.println("UP");
                }
                //根据按下的不同的键  产生不同的结果
            }
        });
    }
}

Swing

窗口、面板

package com.dongfang.lesson04;

import javax.swing.*;
import java.awt.*;

public class JFrameDemo01 {
    //init();初始化
    public void init(){
        //顶级窗口
        JFrame jFrame = new JFrame("JFrame窗口");
        jFrame.setVisible(true);
        jFrame.setBounds(100,100,200,200);
        jFrame.setBackground(Color.cyan);

        //设置文字Jlabel
        JLabel label = new JLabel("文字");

        jFrame.add(label);

        //容器实例化

        //关闭事件
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        //建立一个窗口
        new JFrameDemo01().init();
    }
}

标签居中

package com.dongfang.lesson04;

import javax.swing.*;
import java.awt.*;

public class JFrameDemo02 {
    public static void main(String[] args) {
        new MyJFrame2().init();
    }
}

class MyJFrame2 extends JFrame{
    public void init(){
        this.setVisible(true);
        this.setBounds(100,100,200,200);
        //设置文字Jlabel
        JLabel label = new JLabel("文字");

        this.add(label);
        //让文本标签居中
        label.setHorizontalAlignment(SwingConstants.CENTER);//设置水平对齐
        //获得一个容器
        Container contentPane = this.getContentPane();
        contentPane.setBackground(Color.yellow);
    }
}

弹窗

Dialog用来被弹出,默认就有关闭事件

package com.dongfang.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(WindowConstants.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);
        //this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        Container container = this.getContentPane();
        container.setLayout(null);

        container.add(new Label("弹窗的窗口"));
    }
}

标签:java,Day02,GUI,编程,void,import,new,100,public
From: https://www.cnblogs.com/dongfangyulv/p/18427912

相关文章

  • 网络编程练习:华清速递
    【1】服务器代码#include"head.h"fd_setrdfs;intnum=1;sqlite3*db;sqlite3*mdb;intinit_server(intport);//初始化服务器voidRegister(PACK*msg);//注册//void*handler(void*arg);//线程函数voidLogin(PACK*msg);//上线voidSend_out......
  • 【Web APIs day02 事件绑定处理和事件对象、网页交互】
    WebAPIs-第二天笔记掌握事件绑定处理和事件对象,完成常见网页交互事件监听事件类型事件对象拓展知识综合案例事件监听以前写的代码都是自动执行的,我们希望一段代码在某个特定的时机才去执行,比如点击按钮可以弹出警示框比如鼠标经过显示下拉菜单等等事件事件是程......
  • Go 语言编程极简教程 2
    Go语言编程极简教程2我将为您提供一个Go语言编程的极简教程。我会尽量详细地解释每个步骤,并探讨多种方法来介绍这个主题。让我们开始吧!文章目录Go语言编程极简教程2介绍Go语言安装Go语言环境创建第一个Go程序解释Go程序结构Go语言的基本数据类型变量声......
  • 高级QML编程技巧
    高级QML编程技巧使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频免费看免费Q......
  • QML与WebGL的交互编程
    QML与WebGL的交互编程使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频......
  • QML与WebGL的交互编程
    QML与WebGL的交互编程使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频免费看......
  • 用pyautogui爬公众号文章
    因为我关注的这个公众号文章内容很简单,基本都是纯文字,所以直接全选复制文本就可以了,用pyautogui比selenium还来得快。摘要:用pyautogui控制公众号文章列表的滚动和点击用pyautogui发送快捷键全选复制网页文本用pyperclip接收剪切板中的文字特别注意:每次打开新网页或......
  • 想要转行到互联网行业,是应该选择软件工程还是网络安全?_网络工程和网络空间安全谁更适
    学习路线:这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄......
  • ROS 编程入门的介绍
    2.1创建ROS功能包ROS(RobotOperatingSystem)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个ROS功能包并实现一些基本功能。2.1.1使用ROS主题ROS主题(Topic)是一种发布/订阅机制,允许......
  • 【Linux】Shell 编程规范及检查工具推荐
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口| 精选文章 | Kubernetes |Docker |Linux |羊毛资源 | 工具推荐 |往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决......