Java 之 GUI

1.SWT:

  a.组成:①java.awt包:工具类——颜色、字体类等

      ②javax.swing包:容器类 与 组件 (java.awt包中容器类与组件的升级版,以J打头)

  b.总结:SWT = Swing + AWT

 

 

2.容器:

  a.首层容器:JWindow、JFrame、JDialoge、JApplet

  b.中间容器:Jpanel

  c.组件:

    ①标签——JLabel (注:JLabel也能做容器)

    ②文本框——JTextField

     密码框——JPasswordField

    ③按钮——JButton

    ④下拉列表——JComboBox<String>

    ⑤单选框——JRadioButton

    ⑥复选框——JRadioButton

    ⑦文本域——JTextArea

 

3.布局:

  a.分类:①边界布局管理器(麻将布局)——BorderLayout

      ②流布局管理器——FlowLayout

      ③网格布局管理器——GridLayout

      ④卡片布局管理器——CardLayout

  b.边界布局:

    ①特点:把整个容器划分为5个部分;东西南北中,南北要贯通,中间最大(不仅是中间的范围最大,权利也最大)

        当周边不存在的时候中间会占领周边,当中间不存在的时候周边不能占据中间

    ②使用:不是用来直接放组件的,而是用来放置子容器(中间容器)的

    ③注意:在默认的情况下,JFrame的内容面板就是边界布局

        直接add就是默认往中间放

this.contentP.add(this.btn1);        //往中间放
this.contentP.add(BorderLayout.NORTH, this.btn2);        //往北面放

 

  c.流布局:

    ①特点:按从左往右,从上往下,由中间开始的方式以此排放组件

        组件的位置会随着容器大小的改变而改变

        组件大小要根据组件内容确定

    ②使用:流布局是用来放置组件的,而不是用来放中间容器的

        流布局最好只做单行布局

  d.网格布局:

    ①特点:按行列将整个容器划分为等大的区域

        放入的子容器的数目如果与设置的数目不等,优先保证行改变列

    ②使用:不是用来直接放组件的,而是用来放置子容器(中间容器)的

this.contentP.setLayout(new GridLayout(2,3));

 

  e.卡片布局:

    ①特点:容器中的卡片按照顺序按最上面到最下面的顺序存放,身上至少贴上一张卡片

        第一个被放入的卡片在最上面

        每张卡片放入的时候要给出别名

this.add("spring", this.sprP);

    ②使用:不是用来直接放组件的,而是用来放置子容器(中间容器)的

    ③翻页步骤:

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

 

 

4.事件处理

  a.特点:①一个监听器,可以绑定多个事件源

      ②一个事件源,可以绑定多个监听器

      ③监听器有各自的监听事件类型

  b.步骤:①写好界面——事件源对象已有

      ②选择合适的监听器类型

      ③书写监听器实现类 (写好处理代码)

      ④产生监听器对象,和事件源对象进行绑定

 

5.监听器

  a.分类:ActionListener——点击监听器

      KeyListener——键盘监听器

      MouseListener——鼠标监听器

      MouseWheelListener——鼠标滑轮监听器

      WindowListener——窗口监听器

  b.最经典的监听器实现方法:

    ①匿名内部类的使用——在跟事件源对象绑定监听器对象的同时,实现监听器类

        this.redBtn.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                ColorFrame.this.contentP.setBackground(Color.RED);
                ColorFrame.this.redBtn.setEnabled(false);
                ColorFrame.this.greenBtn.setEnabled(true);
            }
        });

    ②特点:每个事件源对象拥有独立的监听器类,同时没有多的java文件。即满足单一,又没有增加文件数量

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

 

posted @ 2016-12-17 19:18  晨M风  阅读(220)  评论(0编辑  收藏  举报