JComponent类的部分子类以及JFrame类和JDialog类java
1.容器类(Container)和组件类(Component)编辑器
Java把由Component类的子类或间接子类建立的对象称为一个组件;把由Container的子类或间接子类建立的对象称为一个容器。布局
容器自己也是一个组件,所以能够把一个容器添加到另外一个容器中实现容器的嵌套。spa
java.swing包中有4个最重要的类JApplet,JFrame,JDialog和JComponent。设计
2.JFrame窗体3d
avax.swing包中的JFrame类是java.awt包中Frame类的子类,所以JFrame类其子类建立的对象是窗体。 对象
当应用程序须要一个窗口时,可以使用JFrame或其子类建立一个对象。窗口默认地被系统添加到显示器屏幕上,所以不容许将一个窗口添加到另外一个容器中。Frame类经常使用方法以下:blog
3.菜单组件索引
菜单放在菜单条里,菜单项放在菜单里。资源
1):JMenuBar菜单条
JComponent类的子类JMenuBar是负责建立菜单条的,即JMenuBar的一个实例就是一个菜单条。
JFrame类有一个将菜单条放置到窗口中的方法:
public void setJMenuBar(JMenuBar menubar);
该方法将菜单条添加到窗口的菜单条区域(注意:只能向窗口添加一个菜单条)
2):JMenu菜单
JComponent类的子类JMenu类是负责建立菜单的,即JMenu的一个实例就是一个菜单。JMenu类的主要方法有如下几种:
JMenu(String s) 创建一个指定标题菜单,标题由参数s肯定
public void add(MenuItem item) 向菜单增长由参数item指定的菜单选项对象。
public void add(String s) 向菜单增长指定的选项。
public JMenuItem getItem(int n) 获得指定索引处的菜单选项。
public int getItemCount() 获得菜单选项数目。
3):JMenu菜单
JComponent类的子类JMenu类是负责建立菜单的,即JMenu的一个实例就是一个菜单。JMenu类的主要方法有如下几种:
JMenu(String s) 创建一个指定标题菜单,标题由参数s肯定
public void add(MenuItem item) 向菜单增长由参数item指定的菜单选项对象。
public void add(String s) 向菜单增长指定的选项。
public JMenuItem getItem(int n) 获得指定索引处的菜单选项。
public int getItemCount() 获得菜单选项数目。
4):JMenuItem菜单项
JMenuItem是Menu的父类,该类是负责建立菜单项的,即JMenuItem的一个实例就是一个菜单项。菜单项放在菜单里。JMenuItem类的主要方法有如下几种:
5):嵌入子菜单
JMenu是JMenuItem的子类,所以菜单项自己还能够是一个菜单,这样的菜单项称为子菜单。
为了使得菜单项有一个图标,能够用图标类Icon声明一个图标,而后使其子类ImageIcon建立一个图标,如:
Icon icon=new ImageIcon(“”);
4.布局设计
java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout布局类和java.swing.border包中的BoxLayout布局类。
容器可使用
setLayout(布局对象);
来设置本身的布局。
对于JFrame窗口,默认布局是BorderLayout布局。
1):FlowLayout布局
构造方法:FlowLayout();能够建立一个居中对齐的布局对象,如:
FlowLayout flow=new FlowLayout();
con.setLayout(flow);容器con使用flow这个布局对象
FlowLayout布局对象调用setAlignment(int aligin)方法能够从新设置布局的对齐方式,其中align能够取值FlowLayout.LEFT、FlowLayout.CENTER或FlowLayout.RIGHT。
FlowLayout布局对象调用setHgap(int hgap)方法和setVgap(int vgap)方法能够从新设置布局的水平间隙和垂直间隙。
如须要改变最佳大小,组件需调用:
public void setPreferredSize(Dimension preferredSize)
设置大小。例如:button.setPreferredSize(new Dimension(20,20));
注:对于添加到使用FlowLayout布局的容器中的组件,组建调用setSize(int x,int y)设置的大小无效。
2):BorderLayout布局是Window容器的默认布局。
JFrame、JDialog都是Window类的间接子类,它们的内容面板的默认布局都是BorderLayout布局。
若是一个容器使用这种布局,那么容器空间简单地划分为东、西、南、北、中五个区域,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示。
例如:
一个使用BorderLayout布局的容器con,可使用add()方法将一个组件b添加到中心区域:
con.add(b,BorderLayout.CENTER);或con.add(BorderLayout.CENTER,b);
注:添加到某个区域的组件将占据整个这个区域,这个区域只能放置一个组件,若是向某个已放置了组件的区域再放置一个组件,那么先前的组件将被后者替换。
注:使用BorderLayout布局的容器最多能添加5个组件,若是容器中须要添加的组件超过5个,就必须使用容器的嵌套或改用其余布局策略。
3):CardLayout布局
使用CardLayoutu容器能够容纳多个组件,但同一时刻容器只能从这些组件中选出一个来显示,就像一叠“扑克牌”每次只能显示最上面的一张同样,这个被显示的组件将占据全部的容器空间。
JtabbedPane窗格的默认布局是CardLayout布局,而且自带一些选项卡,这些选项卡与用户添加到JTabbedPane窗格中的组件相对应,单机该选项卡,JTabbedPane窗格将显示对应的组件,选项卡窗格自带的选项卡默认的在该选项卡窗格的顶部,从左向右一次排列,选项卡的顺序和所对应的组件的顺序相同。
JTabbedPane窗格可使用add(String text,Component c);方法将组件c添加到JTabbedPane窗格中,并指定和组件c对应的选项卡的文本提示是text。
使用JTabbedPane窗格的构造方法
public JTabbedPane(int tabPlacement)建立的选项卡窗格的选项卡的位置由参数tabPlacement指定,该参数的有效值为JTabbedPane.TOP、JTtabbedPane.BOTTOM、JTabbedPane.LEFT 和JTabbedPane.RIGHT。
4):GridLayout布局
GridLayout是使用较多的布局编辑器,其基本布局策略是把容器划分红若干行若干列的网格区域,组件就位于这些划分出来的小格中。GridLayout比较灵活,划分多少网格由程序自由控制,并且组件定位也比较精确,使用GridLayout布局编辑器的通常步骤以下:
(1)使用GridLayout的构造方法GridLayout(int m,int n)建立布局对象,指定划分网格的行数m和列数n,如 GridLayout grid=new GridLayout(10,8);
(2)使用GridLayout布局的容器调用方法add()将组件加入容器,组件进入容器的顺序将按照第一行第一个、第一行第二个…第一行最后一个、第二行第一个…最后一行第一个…最后一行最后一个。
使用GridLayout布局的容器最多可添加m×n个组件。GridLayout布局中每一个网格都是相同大小,而且强制组件与网格的大小相同。
因为GridLayout布局中每一个网格都是相同大小而且强制组件与网格的大小相同,使得容器中的每一个组件也都是相同的大小,显得很不天然。为了克服这个缺点,可使用容器嵌套。例如,一个容器使用GridLayout布局,将容器分为三行一列的网格,那么能够把另外一个容器添加到某个网格中,而添加的这个容器又能够设置为GridLayout布局、FlowLayout布局、CarderLayout布局或BorderLayout布局等。利用这种嵌套方法,能够设计出符合必定须要的布局。
5):BoxLayout布局
用BoxLayout类能够建立一个布局对象,称为盒式布局。BoxLayout在java.swing.border包中。java swing包提供了Box类,该类也是Container类的一个子类,建立的容器称为一个盒式容器。盒式容器的默认布局是盒式布局,并且不容许更改盒式容器的布局。所以,在策划程序的布局时,能够利用容器的嵌套,将某个容器嵌入几个盒式容器,达到布局目的。
BoxLayou的构造方法BoxLayout(Container con,int axis)能够建立一个盒式布局对象,并指定容器con使用该布局对象,参数axis的有效值是BoxLayout.X_AXIS和BoxLayout.Y_AXIS。
Box类的类(静态)方法createHorizontalBox()能够得到一个具备行型盒式布局的盒式容器;Box类的类(静态)方法createVerticalBox()能够得到一个具备列型盒式布局的盒式容器。
控制盒式布局容器中组件之间的距离,须要使用水平支撑或垂直支撑。
Box类调用静态方法createHorizontalStrut(int width)能够获得一个不可见的水平Struct类型对象.称为水平支撑.该水平支撑的高度为0,宽度是width。
Box类调用静态方法createVertialStrut(int height)能够获得一个不可见的垂直Struct类型对象,称为垂直支撑.参数height决定垂直支撑的高度,垂直支撑的宽度为0。