GUI学习入门(一)

GUI学习-实现窗口

首先 设计第一个窗口的各项属性:

public class TestFrame {
    //GUI 第一个界面
    public static void main(String[] args) {
        // Frame
        Frame frame = new Frame("我的第一个Java图形界面窗口");
        // 设置可见性
        frame.setVisible(true);
        // 设置窗口大小
        frame.setSize(400,400);
        // 设置背景颜色 Color
        frame.setBackground(new Color(14, 14, 203));
        // 弹出初始位置
        frame.setLocation(200,200);
        // 设置大小固定
        frame.setResizable(false);
    }
    // 问题 窗口无法关闭
}

运行代码样式:
在这里插入图片描述
回顾JAVA封装 进行第二次窗口设计:

public class TestFrame1 {
    public static void main(String[] args) {
        // 展示多个窗口
        MyFrame myFrame1 = new MyFrame(100,100,200,200,new Color(9, 227, 9));
        MyFrame myFrame2 = new MyFrame(300,100,200,200,new Color(10, 82, 224));
        MyFrame myFrame3 = new MyFrame(100,300,200,200,new Color(217, 9, 52));
        MyFrame myFrame4 = new MyFrame(300,300,200,200,new Color(236, 187, 7));
    }
}
class MyFrame extends Frame{
    static int id = 0; // 可能存在多个窗口,需要计数器
    public MyFrame(int x,int y,int w,int h,Color color){
        super("MyFrame"+(++id));
       setVisible(true);
       setBounds(x,y,w,h);
       setBackground(color);
    }
}

运行结果:
在这里插入图片描述
Panel学习:嵌套在Frame中:可以通过监听解决窗口关闭问题

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


// Panel 解决了关闭事件
public class TestPanel {
    // Panel可以看成是一个空间 但是不能单独存在
    public static void main(String[] args) {
        Frame frame = new Frame();
        // 布局概念
        Panel panel = new Panel();
        // 设置布局
        frame.setLayout(null);
        // 坐标
        frame.setBounds(300,300,500,500);
        frame.setBackground(new Color(7, 85, 239));
        // Panel设置坐标,相对于Frame
        panel.setBounds(50,50,250,250);
        panel.setBackground(new Color(246, 9, 9));
        // frame.add(panel)
        frame.add(panel);
        frame.setVisible(true);
        // 监听事件:监听窗口关闭事件 System.exit(0)
        // 适配器模式
        frame.addWindowListener(new WindowAdapter() {
            // 窗口关闭要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                // 结束程序
                System.exit(0);
            }
        });
    }
}

运行实现截图:
在这里插入图片描述

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.youkuaiyun.com/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值