• day20 GUI(Graphics User Interface)


    顶层容器:JWindow、JFrame、JDialge、JAsplet

    JFrame,默认布局是边界布局

    JFrame的内容面板是:Container。

    面板容器:JPanel,默认布局是流布局。

    布局:空布局(绝对布局)、边界布局管理器、流式布局管理器、网格布局管理器、卡片布局管理器、网格箱布局管理器

    边界布局:东西南北中,南北要贯通,中间最大(范围最大,权利最大)。

    流式布局:按从左往右、从上到下、中间开始的方式依次排放,组件大小根据内容确定。

    网格布局:按行列将整个容器划分为等大的区域,放入的子容器数目与设置的数目不等时,优先保证行,改变列。

    卡片布局:

    翻页步骤:1、首先得到被设置为卡片布局的那个容器
        SeasonPanel sp = ButtonPanel.this.cardF.getSeaP();
        //2、得到这个容器的布局管理器
        CardLayout card = (CardLayout)sp.getLayout();
        //3、调用该布局管理器翻页
        card.first(sp);

    组件:

    JTextField(文本框)、JPasswordField(密码框)、JLabel(标签)、JButton(按钮)、JCheckBox(复选框)、JRadioButton(单选框)、JComboBox(下拉框)、JList(列表框)、JScrollPane(滚动窗格)、JSplitPane(拆分窗格)、JTextArea(文本域)、JTabbedPane(页签组件)...

    同一组的单选、复选按钮必须创建并放入到ButtonGroup组件中。

    事件处理机制:

    方法1、让一个监听类监听多个事件源,用if判断进行分割,但这么做违背单一原则。

    监听器提供的抽象方法——回调方法,抒写了这个方法的实现,但并不主动调用,交由系统调用。

    如果需要操作非事件源的其它组件,需要传参,在构造的时候传参,一般传参传Frame面板的那个参。

    方法2、让容器类充当监听器

    只能让这个容器类监听类中的多个对象,违背了单一职责。

    好处:操作本容器的组件或中间容器,不用传参。

    方法3、匿名内部类(推荐使用)

    在绑定监听的时候,同时实现监听类。

    好处:每个事件源对象都可以拥有监听器类,既满足单一,也不会增加文件数量。

    操作外部容器类的任何组件/子容器不用传参。

    JFrame前段代码(常用):

     public MyFrame(){
       Toolkit tk = Toolkit.getDefaultToolkit();//获取工具对象
       int screenWidth = (int)tk.getScreenSize().getWidth();
       int screenHight = (int)tk.getScreenSize().getHeight();
        this.setSize(400, 300);//设置窗体大小
       this.setLocation(this.getX(), this.getY());//设置窗体位置
       this.setBackground(Color.BLUE);//设置背景颜色
       this.setTitle("欢迎您");//设置标题
       this.setIconImage(tk.createImage("路径"));//设置标题图片
       this.setResizable(true);//设置大小不能改变
       this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);//退出即关闭
       this.addContent();//内容面板
       this.setVisible(true);//设置窗体可见
      }
      private void addContent(){
       this.contentP= this.getContentPane();//获取内容面板

    }

    java绘图技术

    1、绘图原理:Component类提供了两个和绘图相关最重要的方法

         Paint(Graphics g)绘制组件的外观

         repaint()刷新组件的外观

    2、绘图原理:

    以下情况paint()将会被调用

    窗口的大小发生变化

    组件第一次在屏幕显示

    repaint函数被调用

    3、Graphics类

    画直线——diawLine

    画矩形边框——diawRect

    画椭圆边框——drawOval

    画填充矩形——fillRect

    画填充椭圆——fillOval

    画图片——drawImage

    画字符串——drawString

    ...

  • 相关阅读:
    张建(北京工业大学软件学院副教授)_百度百科
    孤独患者马天宇:独自生存我也会适应得很好_红人访_腾讯娱乐_腾讯网
    zz
    java~springboot~ibatis Invalid bound statement (not found)原因
    数据库~dotnetcore连接Mysql插入中文失败
    k8s~术语解释
    springboot~让我习惯了TDD的开发模式
    POJ 2498 Martian Mining
    Java中的DeskTop类
    我和ip_conntrack不得不说的一些事
  • 原文地址:https://www.cnblogs.com/fengshaolingyun/p/6198895.html
Copyright © 2020-2023  润新知