(精品)第11章高级组件GUI设计.ppt

上传人:s****8 文档编号:82705489 上传时间:2023-03-26 格式:PPT 页数:166 大小:2.16MB
返回 下载 相关 举报
(精品)第11章高级组件GUI设计.ppt_第1页
第1页 / 共166页
(精品)第11章高级组件GUI设计.ppt_第2页
第2页 / 共166页
点击查看更多>>
资源描述

《(精品)第11章高级组件GUI设计.ppt》由会员分享,可在线阅读,更多相关《(精品)第11章高级组件GUI设计.ppt(166页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第11章 高级组件GUI设计第11章 高级组件GUI设计11.1 界面布局管理界面布局管理11.2 键盘事件键盘事件(KeyEvent)11.3 鼠标事件鼠标事件(MouseEvent)11.4 窗口与面板窗口与面板11.5 菜单设计菜单设计11.6 对话框设计对话框设计习题11 第11章 高级组件GUI设计11.1 11.1 界面布局管理界面布局管理11.1.1 FlowLayoutjava.FlowLayout类是java.lang.Object类的直接子类。FlowLayout的布局策略是将遵循这种布局策略的容器中的组件按照加入的先后顺序从左向右排列,当一行排满之后就转到下一行继续从左至

2、右排列,每一行中的组件都居中排列。FlowLayout是Applet缺省使用的布局编辑策略。第11章 高级组件GUI设计FlowLayout类有三个构造方法,分别是:(1)FlowLayout():用于创建一个版面设定为居中对齐、各组件的水平及垂直间隔为5个像素点的FlowLayout类的对象。(2)FlowLayout(int align):用于创建一个FlowLayout类的对象,版面按给出的align值对齐,各组件的水平及垂直间隔为5个像素。align的值可以是FlowLayout.LEFT(左对齐)、FlowLayout.RIGHT(右对齐)、FlowLayout.CENTER(居中对

3、齐)方式。第11章 高级组件GUI设计(3)FlowLayout(int align,int hgap,int vgap):用于创建一个既指定对齐方式,又指定组件间间隔的FlowLayout类的对象。参数align的作用及取值同上;参数hgap指定组件间的水平间隔;参数vgap指定各组件间的垂直间隔。间隔单位为像素点。对于一个原本不使用FlowLayout布局编辑器的容器,若需要将其布局策略改为FlowLayout,可以使用setLayout(new FlowLayout()方法,该方法是所有容器的父类Container的方法,用于为容器设定布局编辑器。第11章 高级组件GUI设计11.1.2

4、 BorderLayoutjava.BorderLayout类是java.lang.Object类的直接子类。BorderLayout布局策略是把容器内的空间划分为东、西、南、北和中五个区域。这五个区域分别用字符串常量East、West、South、North和Center表示。向这个容器内每加入一个组件都应该指明把它放在容器的哪个区域中。分布在北部和南部区域的组件将横向扩展至占据整个容器的长度;分布在东部和西部的组件将伸展至占据容器剩余部分的全部宽度;最后剩余的部分将分配给位于中央的组件。如果某个区域没有分配组件,则其他组件可以占据它的空间。第11章 高级组件GUI设计BorderLayou

5、t类有两个构造方法,分别是无参数的BorderLayout()和带参数的BorderLayout(int hgap,int vgap)。前者创建一个各组件间的水平间隔、垂直间隔都为0的BorderLayout类的对象;后者创建一个各组件间的水平间隔为hgap、垂直间隔为vgap的BorderLayout类的对象。第11章 高级组件GUI设计 【示例程序c11_1.java】使用BorderLayout布局策略在五个位置分别加入了四个按钮和一个标签,当点击按钮时,标签的文本就是按钮的标签的文本。import javax.swing.*;import java.awt.*;import java.

6、awt.event.*;public class c11_1 extends JApplet implements ActionListener JButton bt1=new JButton(北部),第11章 高级组件GUI设计 bt2=new JButton(西部),bt3=new JButton(东部),bt4=new JButton(南部);JLabel lb1=new JLabel(中部);Container cp=getContentPane();public void init()/设置BorderLayout 布局,组件间隔为11 cp.setLayout(new Border

7、Layout(11,11);cp.add(North,bt1);/将bt1放置于北区 bt1.addActionListener(this);第11章 高级组件GUI设计 cp.add(West,bt2);/将bt2放置于西区 bt2.addActionListener(this);cp.add(East,bt3);/将bt3放置于东区 bt3.addActionListener(this);cp.add(South,bt4);/将bt4放置于南区 bt4.addActionListener(this);cp.add(Center,lb1);/将bt5放置于中区 第11章 高级组件GUI设计

8、public void actionPerformed(ActionEvent e)if(e.getSource()=bt1)lb1.setText(按钮1);else if(e.getSource()=bt2)lb1.setText(按钮2);else if(e.getSource()=bt3)lb1.setText(按钮3);else lb1.setText(按钮4);第11章 高级组件GUI设计图11.1 程序c11_1的运行结果第11章 高级组件GUI设计11.1.3 CardLayoutCardLayout的版面布局方式是将每个组件看成一张卡片,如同扑克牌一样将组件堆叠起来,而显示在

9、屏幕上的每次只能是最上面的一个组件,这个被显示的组件将占据所有的容器空间。用户可通过表11.1所示的方法选择使用其中的卡片。CardLayout类有两个构造方法,分别是CardLayout()和CardLayout(int hgap,int vgap)。前者使用默认(间隔为0)方式创建一个CardLayout()类对象;后者使用由hgap指定的水平间隔和由vgap指定的垂直间隔创建一个CardLayout()类对象。第11章 高级组件GUI设计CardLayout类的常用成员方法列于表11.1中。表11.1 CardLayout类的常用成员方法 第11章 高级组件GUI设计 【示例程序c11_

10、2.java】使用CardLayout的布局策略,在容器中放入三个按钮,显示第二个按钮。import java.awt.*;import javax.swing.*;public class c11_2 extends JApplet JButton bt1=new JButton(按钮A);JButton bt2=new JButton(按钮B);JButton bt3=new JButton(按钮C);Container cp=getContentPane();/设置CardLayout布局第11章 高级组件GUI设计 CardLayout card=new CardLayout(20,2

11、0);public void init()cp.setLayout(card);cp.add(a,bt1);cp.add(b,bt2);cp.add(c,bt3);card.next(cp);/显示按钮B 第11章 高级组件GUI设计图11.2 程序c11_2的运行结果第11章 高级组件GUI设计11.1.4 11.1.4 GridLayoutGridLayout 如果界面上需要放置的组件较多,且这些组件的大小又基本一致时,例如计算器、遥控器的面板,使用GridLayout布局策略是最佳的选择。GridLayout的布局策略是把容器的空间划分为若干行、若干列的网格区域,而每个组件按添加的顺序从

12、左向右、从上向下地占据这些网格。第11章 高级组件GUI设计 GridLayout类的三个构造方法如下:(1)GridLayout():按默认(1行1列)方式创建一个GridLayout布局。(2)GridLayout(int rows,int cols):创建一个具有rows行、cols列的GridLayout布局。(3)GridLayout(int rows,int cols,int hgap,int vgap):按指定的行数rows、列数cols、水平间隔hgap和垂直间隔vgap创建一个GridLayout布局。第11章 高级组件GUI设计 【示例程序c11_3.java】使用Grid

13、Layout的布局,在容器中放入4个按钮。import java.awt.*;import javax.swing.*;public class c11_3 extends Japplet Container cp=getContentPane();public void init()/设置GridLayout布局 GridLayout myLayout=new GridLayout(2,2,20,30);第11章 高级组件GUI设计 cp.setLayout(myLayout);cp.add(new JButton(按钮A);cp.add(new JButton(按钮B);cp.add(ne

14、w JButton(按钮C);cp.add(new JButton(按钮D);第11章 高级组件GUI设计图图11.3 11.3 程序程序c11_3c11_3的运行结果的运行结果第11章 高级组件GUI设计11.1.5 11.1.5 BoxLayoutBoxLayoutBoxLayout是swing所提供的布局管理器,它的继承关系如下:java.lang.Object javax.swing.BoxLayout BoxLayout只有两种排列方式,一种是水平,另一种是垂直。我们可以使用BoxLayout所提供的两个常量X_AXIS、Y_AXIS来指明组件在容器中是水平还是垂直排列的。BoxLa

15、yout类与Box类结合,可以提供多样化的布局。通常的做法是使用若干个Box容器,由于Box容器的默认布局是BoxLayout,而且只能使用这个布局,因此,每一个Box容器中组件的排列方式也只能按水平或垂直方向排列。第11章 高级组件GUI设计 1 1BoxLayoutBoxLayout和和BoxBox的构造函数的构造函数 创建BoxLayout类的对象的构造方法是:BoxLayout(Container target,int axis)其中,target是容器对象;axis指明target中组件的排列方式,其值可为表示水平排列的BoxLayout.X_AXIS,或为表示垂直排列的BoxLay

16、out.Y_AXIS。第11章 高级组件GUI设计 讲到BoxLayout,我们不能不提到Box这个容器。Box这个容器默认的布局是BoxLayout,而且只能使用这个布局,否则编译时就会产生错误。由于BoxLayout是以水平或垂直方式排列的,因此,当我们要创建一个Box容器时,就必须指定Box容器中组件的排列方式是水平还是垂直的。Box的构造函数为:Box(int axis)Box的构造函数中只有一个参数axis,用以指定Box中的组件是按水平还是按垂直方式排列的。axis的值可以用BoxLayout.X_AXIS或BoxLayout.Y_AXIS指定,也可使用Box类提供的两个方法cre

17、atHorizontalBox()与creatVerticalBox()来指定。第11章 高级组件GUI设计2 2BoxLayoutBoxLayout类和类和BoxBox类的常用成员方法类的常用成员方法表表11.2 11.2 BoxLayoutBoxLayout类常用的成员方法类常用的成员方法第11章 高级组件GUI设计表表11.3 11.3 BoxBox类常用的成员方法类常用的成员方法第11章 高级组件GUI设计 为方便布局管理,Box类还提供了4种透明组件Glue、Strut、Rigid和Filler,可以将这些透明组件插入其他组件的中间,使这些组件产生分开的效果。这4种透明组件的作用是:

18、Glue:将Glue两边的组件挤到容器的两端。Strut:将Strut两端的组件按水平或垂直方向指定的大小分开。Rigid:可以设置二维的限制,将组件按水平或垂直方向指定的大小分开。Filler:不仅可以设置二维的限制,将组件按水平或垂直方向指定的大小分开,而且还可以设置最大、较佳、最小的长宽大小。它们的具体用法请参阅示例程序c11_4.java。第11章 高级组件GUI设计 3 3使用使用BoxLayoutBoxLayout时需要注意的事项时需要注意的事项 (1)当组件按BoxLayout布局排列好后,不管窗口缩小或放大都不会变动。(2)当使用水平排列方式时,若放进去的组件不等高,则系统将会

19、使所有的组件与最高组件等高。(3)当放在同一行的组件超出容器的宽度时,系统不会自动换行,需要用户自行处理。第11章 高级组件GUI设计 【示例程序c11_4.java】使用BoxLayout布局,将6个组件按结果要求排列。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class c11_4 extends JApplet public void init()Container cp=getContentPane();Box bBox=Box.createHorizontalBox();/设置bBox中

20、的组件按水平方向排列第11章 高级组件GUI设计 cp.add(bBox);/将bBox容器添加到cp对象中 /bBox中放入vBox1容器 Box vBox1=Box.createVerticalBox();/设置bBox1中的组件按垂直方向排列 JLabel lb=new JLabel(这是标签);vBox1.add(lb);/添加标签到vBox1中 JButton bt1=new JButton(这是按钮1);bt1.setMaximumSize(new Dimension(110,200);/设置按钮的最大长度 vBox1.add(bt1);/添加按钮到vBox1中 bBox.add(

21、vBox1);/添加vBox1到bBox中 /bBox中放入vBox2容器第11章 高级组件GUI设计 Box vBox2=Box.createVerticalBox();bBox.add(vBox2);JTextField tf1=new JTextField(这是文本框,11);/设置文本框在容器中沿X方向居中对齐 tf1.setAlignmentX(Component.CENTER_ALIGNMENT);tf1.setMaximumSize(new Dimension(150,50);vBox2.add(tf1);/vBox2容器中放入vBox2h容器 Box vBox2h=Box.cr

22、eateHorizontalBox();/vBox2h容器上的组件按水平方向排列 vBox2.add(vBox2h);/vBox2h容器中放入vBox2h1第11章 高级组件GUI设计 Box vBox2h1=Box.createVerticalBox();/vBox2h1容器上的组件按垂直方向排列 /加入垂直透明组件Strut,间隔为20像素 vBox2h1.add(Box.createVerticalStrut(20);vBox2h1.add(new JTextArea(这是文本区域,15,11);vBox2h1.add(Box.createVerticalStrut(20);vBox2h

23、.add(vBox2h1);/vBox2h容器中放入vBox2h2 Box vBox2h2=Box.createVerticalBox();vBox2h2.add(new JButton(这是按钮2);第11章 高级组件GUI设计 vBox2h2.add(Box.createVerticalGlue();/加入垂直透明组件Glue,组件挤到两边 vBox2h2.add(new JButton(这是按钮4);vBox2h.add(vBox2h2);第11章 高级组件GUI设计图11.4 程序c11_4的运行结果第11章 高级组件GUI设计图11.5 图形层次结构 第11章 高级组件GUI设计 从

24、图11.5中可以看出:bBox容器是最底层容器,它上面放入两个容器vBox1和vBox2。vBox1容器中放入一个标签1组件和一个按钮1组件。vBox2容器中放入一个文本框组件和一个vbox2h容器。vbox2h容器中放入vBox2h1容器和vBox2h2容器。vBox2h1容器中放入一个文本区域组件。vBox2h2容器中放入一个按钮2组件和一个按钮4组件。第11章 高级组件GUI设计11.2 11.2 键盘事件键盘事件(KeyEventKeyEvent)当用户使用键盘进行操作时则会产生KeyEvent事件。处理KeyEvent事件的监听者对象是可以实现KeyListener接口的类,或者是继

25、承KeyAdapter的子类。在KeyListener这个接口中有如下三个事件:keyPressed(KeyEvent e);代表键盘按键被按下的事件。keyReleased(KeyEvent e);代表键盘按键被放开的事件。keyTyped(KeyEvent e);代表按键被敲击的事件。第11章 高级组件GUI设计 KeyEvent类中的常用方法有:(1)public char getKeyChar()方法,它返回引发键盘事件的按键对应的Unicode字符。如果这个按键没有Unicode字符与之对应,则返回KeyEvent类的一个静态常量KeyEvent.CHAR-UNDEFINED。(2)

26、public String getKeyText()方法,它返回引发键盘事件的按键的文本内容。第11章 高级组件GUI设计【示例程序c11_5.java】键盘事件程序。import java.awt.*;import javax.swing.*;import java.awt.event.*;public class c11_5 extends JApplet String s,s1;JLabel lb1=new JLabel(请按键盘);JLabel lb2=new JLabel(复制结果);JTextField tf1=new JTextField(11);/用来输入文字第11章 高级组件

27、GUI设计 JTextArea tf2=new JTextArea(5,11);/用来显示文字内容 Container cp=getContentPane();FlowLayout flow=new FlowLayout(FlowLayout.CENTER,5,5);public void init()cp.setLayout(flow);cp.add(lb1);cp.add(tf1);cp.add(lb2);cp.add(tf2);tf1.addKeyListener(new koLis();第11章 高级组件GUI设计 class koLis extends KeyAdapter publ

28、ic void keyTyped(KeyEvent e)s=tf1.getText()+e.getKeyChar();/获取文本框的内容及键入的字符 if(e.getKeyChar()=n)/若按回车键,则将文本框的内容送入文本域中 s1=tf2.getText()+s;tf1.setText();tf2.setText(s1);第11章 高级组件GUI设计图11.6 c11_5运行结果 第11章 高级组件GUI设计11.3 11.3 鼠标事件鼠标事件(MouseEventMouseEvent)在图形用户界面中,鼠标主要用来进行选择、切换或绘画。当用户用鼠标进行交互操作时,会产生鼠标事件Mou

29、seEvent。处理MouseEvent事件的监听者对象是可以实现MouseListener接口和MouseMotionListener接口的类,或者是继承MouseAdapter的子类。与Mouse有关的事件可分为两类:一类是MouseListener接口,共提供5种方法,主要针对鼠标的按键与位置作检测;另一类是MouseMotionListener接口,共提供2种方法,主要针对鼠标的坐标与拖动操作做处理。这些方法列于表11.4中。第11章 高级组件GUI设计表表11.4 11.4 MouseEventMouseEvent事件及其监听者事件及其监听者第11章 高级组件GUI设计表表11.5

30、11.5 MouseEventMouseEvent类的常用成员方法类的常用成员方法第11章 高级组件GUI设计【示例程序c11_6.java】鼠标事件程序。import java.awt.*;import javax.swing.*;import java.awt.event.*;public class c11_6 extends JApplet int x,y;JLabel lb1=new JLabel(X:),lb2=new JLabel(Y:),lb3=new JLabel();JTextField tf1=new JTextField(5),tf2=new JTextField(5)

31、;Container cp=getContentPane();FlowLayout flow=new FlowLayout(FlowLayout.CENTER,5,5);public void init()第11章 高级组件GUI设计 cp.setLayout(flow);cp.add(lb1);cp.add(tf1);cp.add(lb2);cp.add(tf2);cp.add(lb3);addMouseListener(new mouseListener();addMouseMotionListener(new koLis();class mouseListener implements

32、MouseListener public void mouseClicked(MouseEvent e)lb3.setText(点击鼠标);第11章 高级组件GUI设计 public void mousePressed(MouseEvent e)lb3.setText(鼠标按钮按下);public void mouseEntered(MouseEvent e)lb3.setText(鼠标进入窗口);public void mouseExited(MouseEvent e)lb3.setText(鼠标不在窗口);public void mouseReleased(MouseEvent e)lb3

33、.setText(鼠标按钮松开);class koLis implements MouseMotionListener public void mouseMoved(MouseEvent e)x=e.getX();y=e.getY();第11章 高级组件GUI设计 tf1.setText(String.valueOf(x);tf2.setText(String.valueOf(y);public void mouseDragged(MouseEvent e)lb3.setText(拖动鼠标);第11章 高级组件GUI设计图11.7 程序c11_6的运行结果 第11章 高级组件GUI设计11.4

34、 11.4 窗窗 口口 与与 面面 板板11.4.1 11.4.1 JFrameJFrame容器容器 JFrame是Java Application程序的图形用户界面容器,是一个有边框的容器。JFrame类包含支持任何通用窗口特性的基本功能,如最小化窗口、移动窗口、重新设定窗口大小等。JFrame容器作为最底层容器,不能被其他容器所包含,但可以被其他容器创建并弹出成为独立的容器。JFrame类的继承关系如下:第11章 高级组件GUI设计java.lang.Object java.awt.Component java.awt.Container java.awt.Window java.awt.

35、Frame javax.swing.JFrame 第11章 高级组件GUI设计 使用JFrame容器需要注意以下几点:(1)可以使用JFrame()方法创建一个无标签的JFrame对象,也可以使用JFrame(String title)方法创建一个标签为title的JFrame对象,还可以使用专门的方法getTitle()和setTitle(String)来获取或指定Frame的标题。(2)使用setSize(int x,int y)方法设置JFrame容器大小。(3)创建的JFrame是不可见的,若要使其可见,则需要使用show()方法或给出实际参数为true的setVisible(bool

36、ean)方法。第11章 高级组件GUI设计 (4)向JFrame中添加组件时,必须先取得ContentPane,然后再使用add()方法把组件加入到此ContentPane中,而不能像AWT中的Frame那样直接调用add()方法。(5)JFrame类可以引发WindowEvent类代表的所有七种窗口事件(见表11.8)。(6)每个JFrame在其右上角都有三个控制图标(如图11.8所示),分别代表最小化、最大化和关闭窗口的操作。其中,JFrame可自动完成窗口的最小化和最大化操作,而关闭窗口的操作不能通过点击关闭图标来实现,但可以使用下述三个办法之一来关闭窗口:第11章 高级组件GUI设计

37、设置一个按钮,当用户点击此按钮时关闭窗口;用WINDOWS_CLOSING事件做出响应,关闭窗口;使用菜单命令。无论使用哪一种办法,都需要用到关闭JFrame的System.exit(0)方法。第11章 高级组件GUI设计 【示例程序c11_7.java】创建两个窗口对象,点击第一个窗口中的按钮时打开第二个窗口。import java.awt.*;import javax.swing.*;import java.awt.event.*;public class c11_7 implements ActionListener public c11_7()第11章 高级组件GUI设计 JFrame

38、 f=new JFrame(这是一个JFrame);/创建JFrame对象 Container cp=f.getContentPane();/创建JFrame的容器对象 JButton bt1=new JButton(请点击);bt1.addActionListener(this);cp.add(bt1);f.pack();/调整窗口 f.show();/显示窗口 f.addWindowListener(new WinLis();public void actionPerformed(ActionEvent e)第11章 高级组件GUI设计 JLabel lb=new JLabel(这是第二个

39、窗口);JFrame nf=new JFrame();Container cp1=nf.getContentPane();nf.setTitle(这是一个新JFrame);nf.setSize(180,110);/设置窗口大小 nf.show();cp1.add(lb);nf.addWindowListener(new WinLis();public static void main(String arg)第11章 高级组件GUI设计 new c11_7();class WinLis extends WindowAdapter public void windowsClosing(Window

40、Event e)System.exit(0);第11章 高级组件GUI设计图11.8 程序c11_7的运行结果1 第11章 高级组件GUI设计图11.9 程序c11_7的运行结果2第11章 高级组件GUI设计11.4.2 11.4.2 窗口事件窗口事件(WindowEventWindowEvent)从c11_7.java程序的运行结果可以看出,若删除窗口事件,则窗口无法关闭。我们可以利用Java语言提供的窗口事件WindowEvent来对窗口进行操作。WindowEvent类包含表11.6所列的几个具体窗口事件。第11章 高级组件GUI设计表表11.6 11.6 WindowEventWind

41、owEvent类包含的窗口事件类包含的窗口事件第11章 高级组件GUI设计 WindowEvent类的主要方法有getWindow()和getSource()。这两个方法的区别是:getWindow()方法返回引发当前WindowEvent事件的具体窗口,返回值是具体的Window对象;getSource()方法返回的是相同的事件引用,其返回值的类型为Object。第11章 高级组件GUI设计 【示例程序c11_8.java】制作两个JFrame窗口,实现两个窗口的切换、关闭、最小化等操作。import java.awt.*;import javax.swing.*;import javax.

42、swing.JFrame;import java.awt.event.*;public class c11_8 JLabel lb1=new JLabel(这是第一个窗口);JLabel lb2=new JLabel(这是第二个窗口);public static void main(String arg)new c11_8();第11章 高级组件GUI设计 public c11_8()JFrame f1=new JFrame();/创建JFrame对象 JFrame f2=new JFrame();Container cp=f1.getContentPane();/创建JFrame的容器对象,

43、获得ContentPane Container cp1=f2.getContentPane();f1.setTitle(JFrame1);f2.setTitle(JFrame2);f1.setSize(150,110);/设置窗口大小 f2.setSize(150,110);cp.add(lb1);第11章 高级组件GUI设计 f1.show();/设置窗口为可见 cp1.add(lb2);f2.show();f1.addWindowListener(new WinLis();f2.addWindowListener(new WinLis();class WinLis extends Wind

44、owAdapter public void windowOpened(WindowEvent e)/打开窗口第11章 高级组件GUI设计 public void windowActivated(WindowEvent e)/将窗口设置成活动窗口 public void windowDeactivated(WindowEvent e)/将窗口设置成非活动窗口 public void windowClosing(WindowEvent e)System.exit(0);/窗口关闭 public void windowIconified(WindowEvent e)/最小化窗口 第11章 高级组件G

45、UI设计图11.10 程序c11_8的运行结果第11章 高级组件GUI设计11.4.3 11.4.3 JPanelJPanel容器容器 在设计用户界面时,为了更合理的安排各组件在窗口的位置,可以考虑将所需组件先排列在一个容器中,然后将其作为一个整体嵌入窗口。Panel和JPanel就是这样一类被称为面板的容器。它们是一类无边框的、不能被移动、放大、缩小或关闭的容器。AWT的Panel与Swing的JPanel的区别是:JPanel支持双缓冲(Double Buffering)功能,在处理动画上较少发生画面闪烁的情况。JPanel类的继承关系如下:第11章 高级组件GUI设计 java.lang

46、.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JPanel 不能把JPanel作为一个图形界面程序最底层的容器,也不能指明JPanel的大小。JPanel总是作为一个容器组件被加入到JFrame、JApplet等其他容器中,当然,JPanel也可以加入到JPanel容器中。JPanel的大小由包含在它里边的组件,包容它的那个容器的布局策略,以及该容器中的其他组件所决定。第11章 高级组件GUI设计表表11.7 11.7 JPanelJPanel类构造方法类构造方法第11章 高级组

47、件GUI设计 【示例程序c11_9.java】设置两个面板容器p1和p2,点击p1容器中的按钮使p2容器的标签产生结果。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class c11_9 public c11_9()第11章 高级组件GUI设计 JFrame f=new JFrame(JPanelDemo);Container cp=f.getContentPane();cp.setLayout(new GridLayout(2,1);JLabel lb=new JLabel3;/创建标签数组 fo

48、r(int i=0;ilb.length;i+)/设置每个标签的属性 lbi=new JLabel(标签+(i+1),JLabel.CENTER);lbi.setBackground(Color.yellow);/设置标签颜色 lbi.setBorder(BorderFactory.createEtchedBorder();/设置标签边框 lbi.setOpaque(true);/让组件变为不透明,使标签颜色显示出来 第11章 高级组件GUI设计 JPanel pal1=new JPanel(new GridLayout(1,1);/创建面板对象 pal1.add(lb0);/加载第0个标签在

49、面板上 JPanel pal2=new JPanel(new GridLayout(1,2);JPanel pal3=new JPanel(new BorderLayout();pal3.add(lb1,BorderLayout.NORTH);pal3.add(lb2,BorderLayout.SOUTH);pal3.add(new JButton(中部),BorderLayout.CENTER);JPanel pal4=new JPanel(new FlowLayout();pal4.add(new JTextArea(JTextArea,5,11);pal2.add(pal3);pal2.

50、add(pal4);cp.add(pal1);cp.add(pal2);f.pack();f.show();f.addWindowListener(new WinLis();第11章 高级组件GUI设计 class WinLis extends WindowAdapter public void windowClosing(WindowEvent e)System.exit(0);public static void main(String arg)new c11_9();第11章 高级组件GUI设计图11.11 程序c11_9的运行结果第11章 高级组件GUI设计 程序说明:程序说明:该程序

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁