第十二周课程总结
这一周我们主要学习的是容器的应用,上一周我们学习了布局管理器和基本容器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);
}
}
![](https://img2018.cnblogs.com/blog/1582167/201911/1582167-20191114211946962-1928995714.png)
二、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);
}
}
![](https://img2018.cnblogs.com/blog/1582167/201911/1582167-20191114212048993-2111883772.png)
三、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);
}
}
![](https://img2018.cnblogs.com/blog/1582167/201911/1582167-20191114212143404-1555956705.png)
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);
}
}
![](https://img2018.cnblogs.com/blog/1582167/201911/1582167-20191114212227095-1288816106.png)
另外一个内容就是事处理,前面我们学习了制作图形界面,但是这只是程序开发中的起步工作,因为我们想让每一个组件(按钮)的发挥自己的作用,就必须对所有的组件进行事件处理。
一、事件和监听器
要想清楚事件处理,则首先应该知道事件的定义是什么,事件就是表示应该对象发生的状态变化,例如,每当一个按按钮时,实际上按钮的状态就发生了改变,那么此时就会产生一个事件,而如果想要处理此事件,则就需要事件的监听者不断地监听事件的变化,并且根据这些事件进行相应的处理。在Swing编程中,依然使用了最早的AWT的事件处理方式,所有的事件类都是EventObject类的子类。
二、窗体事件
WindowListener时专门处理窗体事件的监听接口,一个窗体的所有变化,如窗口打开、关闭等都可以使用这个接口进行监听。
这个知识内容还不是很清楚还需要在仔细理解,因为感觉里面很多的专有名词反应不过来,然后就是对这个的具体结果还没有理解透彻,所有会在后续总结中继续努力。