第十二周课程总结

早过忘川 提交于 2019-12-04 12:01:59

第十二周课程总结

这一周我们主要学习的是容器的应用,上一周我们学习了布局管理器和基本容器JFrame容器。所有AWT组件都应该放到容器里面,并可以设置其他位置、大小,所有的容器都是Component的子类,这一周我们学习了JPanel、JSlitPane、JTannedPane、JScorllPane、JDesktoPane、JINteralFrame。

一、JPanel

JPanel也是常用到的容器之一,我们可以使用JPanel容器完成各种复杂的界面显示。在JPanel中可以加入任意组件,然后直接将JPanel容器加入到JFrame容器中既可以显示。

从中我们可以学习到:可以将多个组件加入到JPanel中实现杂的排序。使用JPanel并结合之前我们学习的布局管理器可以更加方便的管理组件,可以使用布局管理器对多个JPanel进行排列,而每一个JPanel中也可以分别使用不同的布局管理器管理组件,这样就可以对组件进行咋的排列。

package javabook;

import java.awt.*;

import javax.swing.*;

public class JavaJPanel {

    public static void main(String[] args) {
    //  int i;
        JFrame f=new JFrame("第二窗体");
        JPanel pan=new JPanel();
//      pan.add(new JLabel("标签-A"));
//      pan.add(new JLabel("标签-B"));
//      pan.add(new JLabel("标签-C"));
//      pan.add(new JButton("按钮-A"));
//      pan.add(new JButton("按钮-B"));
//      pan.add(new JButton("按钮-C"));
        
        for(int i=0;i<3;i++) {
            pan.add(new JLabel("标签-"+i));
            pan.add(new JButton("按钮"+i));
        }
        f.add(pan);
        f.pack();
        Point p=new Point(300,200);
        f.setLocation(p);
        f.setVisible(true);

    }

}

二、JSplitPane

JSplitPane重要的功能就是分割面板,可以将一个窗体分成两个子窗体,可以是水平排列也可以是垂直排列。

package javabook;

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

public class JavaJSplitPane {

    public static void main(String[] args) {
        JFrame f=new JFrame("第二窗口");
        JSplitPane jsp1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,new JLabel("左标签"),new JLabel("右标签"));
        jsp1.setDividerSize(3);
        JSplitPane jsp2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,jsp1,new JLabel("下标签"));
        jsp2.setDividerSize(10);
        jsp2.setOneTouchExpandable(true);
        f.add(jsp2);
        f.setSize(300, 400);
        f.setLocation(300,200);
        f.setVisible(true);
    }

}

三、JTabbedPane

JTabbedPane是一个在面板上设置多个选项卡供用户选择的容器。就是说如果你需要查看哪方面的内容,则可以直接选择选项卡就可以进行浏览。通过这个方法用户就可以方便的管理自己的相关信息。

package javabook;

import java.io.File;

import javax.swing.*;

public class JavaTabbedPane {

    public static void main(String[] args) {
        JFrame f=new JFrame("第二窗口");
        JTabbedPane tab=new JTabbedPane(JTabbedPane.TOP);
        JLabel lab=new JLabel("标签");
        JButton but=new JButton("按钮");
        //可以在这里添加容器
        String path="d:"+File.separator+"text"+File.separator+"8.jpg";
        Icon image=new ImageIcon(path);
        JLabel lab2=new JLabel(image);
        tab.addTab("文字选项",lab);
        tab.addTab("按钮选项",but);
        tab.addTab("图片选项",null,lab2,"这是一个");
        f.add(tab);
        f.setSize(300, 400);
        f.setLocation(300,200);
        f.setVisible(true);

    }

}

四、JScrollPane

JScrollPane这个容器就是设置滚动条。在一般的图形界面中如果显示的区域不够大,往往会出现滚动条以便客户浏览,在Swing中JScrollPane的主要功能就是为了显示的内容加入水平滚动条。JScrollPane主要由JViewport和JScrollBar两部分组成,前者主要是显示一个矩形的区域让客户浏览,而或者则是形成水平或垂直滚动条。但是我们在开发中一般不会用到这两个类,原因是在JScrollPane中已经为开发者提供了足够大的功能。比如说我们把电脑上的图片作为标签放到容器里面可能容器装不下图片大小,只能显示部分内容这时候我们就需要增加滚动条,还有平时间我们浏览网页的时候,有滚动条用来显示更多的内容。

package javabook;

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

public class JavaJTabbedPane {

    public static void main(String[] args) {
        JFrame f=new JFrame("第三窗口");
    
        JTabbedPane tab=new JTabbedPane(JTabbedPane.TOP);
        JPanel pan1=new JPanel();
        JPanel pan2=new JPanel();
        JLabel lab=new JLabel("标签");
        JButton but=new JButton("按钮");
        pan1.add(lab);
        pan2.add(but);
        String path="d:"+File.separator+"text"+File.separator+"8.jpg";
        Icon image=new ImageIcon(path);
        JLabel lab2=new JLabel(image);
        
        tab.addTab("文字选项",pan1);
        tab.addTab("按钮选项",pan2);
        tab.addTab("图片选项",lab2);
        JScrollPane scr=new JScrollPane(tab,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

        f.add(scr);
        //f.add(tab);
        //f.pack();
        f.setSize(300, 400);
        f.setLocation(300,200);
        f.setVisible(true);
    }

}

另外一个内容就是事处理,前面我们学习了制作图形界面,但是这只是程序开发中的起步工作,因为我们想让每一个组件(按钮)的发挥自己的作用,就必须对所有的组件进行事件处理。

一、事件和监听器

要想清楚事件处理,则首先应该知道事件的定义是什么,事件就是表示应该对象发生的状态变化,例如,每当一个按按钮时,实际上按钮的状态就发生了改变,那么此时就会产生一个事件,而如果想要处理此事件,则就需要事件的监听者不断地监听事件的变化,并且根据这些事件进行相应的处理。在Swing编程中,依然使用了最早的AWT的事件处理方式,所有的事件类都是EventObject类的子类。

二、窗体事件

WindowListener时专门处理窗体事件的监听接口,一个窗体的所有变化,如窗口打开、关闭等都可以使用这个接口进行监听。

这个知识内容还不是很清楚还需要在仔细理解,因为感觉里面很多的专有名词反应不过来,然后就是对这个的具体结果还没有理解透彻,所有会在后续总结中继续努力。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!