import javax swing class Simple Frame extends JFrame

  • Slides: 93
Download presentation

第一个图形用户界面 运行结果: 显示一个空框架 import javax. swing. *; class Simple. Frame extends JFrame{ public Simple.

第一个图形用户界面 运行结果: 显示一个空框架 import javax. swing. *; class Simple. Frame extends JFrame{ public Simple. Frame(){ //� 置框架大小 set. Size(300, 200); } } public class First. Frame{ public static void main(String[] args){ Simple. Frame frame = new Simple. Frame(); //� 示� 框架 frame. set. Visible(true); //� 置用� 关� 框架� 的响�� 作 frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE) ; } }

import javax. swing. *; public class First. Frame{ public static void main(String[] args){ new

import javax. swing. *; public class First. Frame{ public static void main(String[] args){ new Simple. Frame(); } } class Simple. Frame extends JFrame{ public Simple. Frame(){ set. Size(300, 200); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Visible(true); JLabellabel=new. JLabel("标签"); "); label. set. Horizontal. Alignment(JLabel. CENTER); get. Content. Pane(). add(label); label. set. Vertical. Alignment(JLabel. TOP); get. Content. Pane(). add(label); i=new Image. Icon("imag 1. gif"); }Image. Icon } label. set. Icon(i); get. Content. Pane(). add(label);

u 使用javax. swing. JDialog类中构造方法: JDialog(Frame owner, String title, boolean modal) n n n owner指对应的父窗口

u 使用javax. swing. JDialog类中构造方法: JDialog(Frame owner, String title, boolean modal) n n n owner指对应的父窗口 title指当前对话框的标题 modal是指对话框的模式,如果值为true表示模态, 否则为非模态 u 例: JDialog d = new JDialog(app, "��框 ", false); d. set. Size(200, 100); d. set. Visible(true);

u. JOption. Pane��出要求用�提供� 或向其�出通知的�准��框。即��提 供一些有固定模式的��框 import javax. swing. *; public class Standard. Dialog{ public

u. JOption. Pane��出要求用�提供� 或向其�出通知的�准��框。即��提 供一些有固定模式的��框 import javax. swing. *; public class Standard. Dialog{ public static void main(String args[ ]){ JOption. Pane. show. Message. Dialog(null, "同桌的你!"); JOption. Pane. show. Confirm. Dialog(null, "你在他乡还好吗? "); JOption. Pane. show. Input. Dialog(null, "你在他乡还好吗? "); String [ ] s={"好", "不好"}; JOption. Pane. show. Input. Dialog(null, "你在他乡还好吗? ", "输入", JOption. Pane. QUESTION_MESSAGE, null, s, s[0]); } }

6. 3. 3 Border. Layout . . . u 边布局管理器(Border. Layout)是 JFrame和JDialog默认布局管理器 u 把容器分成

6. 3. 3 Border. Layout . . . u 边布局管理器(Border. Layout)是 JFrame和JDialog默认布局管理器 u 把容器分成 5个区域:North,South, East,West和Center set. Layout(new Border. Layout()); Button btn. East=new Button("东"); Button btn. West=new Button("西"); Button btn. North=new Button("北"); Button btn. South=new Button("南"); Button btn. Center=new Button("中"); add(btn. East, Border. Layout. EAST); add(btn. West, Border. Layout. WEST); add(btn. North, Border. Layout. NORTH); add(btn. South, Border. Layout. SOUTH); add(btn. Center, Border. Layout. CENTER); . . .

. . . Button btn[]; // 声明按钮数组 String str[]={"1", "2", "3", "4", "5", "6",

. . . Button btn[]; // 声明按钮数组 String str[]={"1", "2", "3", "4", "5", "6", "7", "8", "9"}; set. Layout(new Grid. Layout(3, 3)); btn=new Button[str. length]; // 创建按钮数组 for(int i=0; i<str. length; i++){ btn[i]=new Button(str[i]); add(btn[i]); }

u 类Group. Layout的常用方法: u public Group. Layout. Parallel. Group create. Parallel. Group(Group. Layout. Al

u 类Group. Layout的常用方法: u public Group. Layout. Parallel. Group create. Parallel. Group(Group. Layout. Al ignment alignment) n使用指定��方式�建并返回一个 Parallel. Group;��方式有 LEADING左 ��、 BASELINE底部��、 CENTER中 心�� u public Group. Layout. Sequential. Group create. Sequential. Group() n�建并返回一个�序 Sequential. Group

u public void set. Auto. Create. Container. Gaps(bool ean auto. Create. Container. Padding) n

u public void set. Auto. Create. Container. Gaps(bool ean auto. Create. Container. Padding) n �置是否��自��建容器与触到容器 �框的�件之�的�隙。默��� false u public void set. Auto. Create. Gaps(boolean auto. Create. Padding) n �置是否将自��建�件之�的�隙。 如果�� true 并且向 Sequential. Group 添加了两个�件, �将自��建�两个�件之�的�隙 n 默��� false

u public void set. Horizontal. Group(Group. Layout. Gro up group) n �置沿水平�确定�件位置和大小的 Group u

u public void set. Horizontal. Group(Group. Layout. Gro up group) n �置沿水平�确定�件位置和大小的 Group u public void set. Vertical. Group(Group. Layout. Group group) n �置沿垂直�确定�件位置和大小的 Group

u按水平(Horizontal)方向划分: Sequential. Group hpg 1 Hpg 2 Parallel. Group Hpg 2 h Sequential. Group

u按水平(Horizontal)方向划分: Sequential. Group hpg 1 Hpg 2 Parallel. Group Hpg 2 h Sequential. Group Hpg 2 a Parallel. Group Hpg 2 b Parallel. Group Hpg 3 Parallel. Group

均为Parallel. Group u按垂直(Vertical)方向划分: vpg 1 vpg 2 vpg 3 Sequential. Group

均为Parallel. Group u按垂直(Vertical)方向划分: vpg 1 vpg 2 vpg 3 Sequential. Group

�听器接口列表 事件� 听器 方法 Action. Listener action. Performed Adjustment. Listener adjustment. Value. Changed Component.

�听器接口列表 事件� 听器 方法 Action. Listener action. Performed Adjustment. Listener adjustment. Value. Changed Component. Listener component. Resized component. Moved component. Shown component. Hidden Container. Listener component. Added component. Removed Focus. Listener focus. Lost、focus. Gained Item. Listener item. State. Changed

�听器接口列表 事件� 听器 方法 Key. Listener key. Pressed、key. Released key. Typed Mouse. Listener mouse.

�听器接口列表 事件� 听器 方法 Key. Listener key. Pressed、key. Released key. Typed Mouse. Listener mouse. Clicked、mouse. Entered mouse. Exited、mouse. Pressed mouse. Released Mouse. Motion. Listener mouse. Dragged、mouse. Moved Text. Listener text. Changed Window. Listener window. Activated、window. Deactivated window. Closed、window. Closing window. Iconified、window. Deiconified window. Opened

public class My. Event extends JFrame{ import……? JButton b=new JButton("请单击我!"); My. Event(String s){ super(s);

public class My. Event extends JFrame{ import……? JButton b=new JButton("请单击我!"); My. Event(String s){ super(s); 注册监听器 Container c=get. Content. Pane(); c. set. Layout(new Flow. Layout()); c. add(b); b. add. Action. Listener(new My. Listener()); set. Size(300, 100); set. Default. Close. Operation(EXIT_ON_CLOSE); set. Visible(true); 定义监听器 } (内部类) class My. Listener implements Action. Listener{ public void action. Performed(Action. Event e){ b. set. Text("哈!你单击我了!"); 处理事件 } } public static void main(String[] args) { new My. Event("事件处理示例"); } }

u 需要import: n import javax. swing. JFrame; n import javax. swing. JButton; n import

u 需要import: n import javax. swing. JFrame; n import javax. swing. JButton; n import java. awt. Flow. Layout; n import java. awt. Container; n import java. awt. event. *;

也可以���� —— public class My. Event extends JFrame implements Action. Listener{ JButton b=new JButton("���我!

也可以���� —— public class My. Event extends JFrame implements Action. Listener{ JButton b=new JButton("���我! "); My. Event(String s){ 自己做监听器 super(s); Container c=get. Content. Pane(); c. set. Layout(new Flow. Layout()); c. add(b); b. add. Action. Listener(This); set. Size(300, 100); set. Default. Close. Operation(EXIT_ON_CLOSE); set. Visible(true); } public void action. Performed(Action. Event e){ b. set. Text("哈!你��我了! "); } public static void main(String[] args) { new My. Event("事件�理示例 "); } }

或者���� —— public class My. Event extends JFrame { JButton b=new JButton("���我! "); My.

或者���� —— public class My. Event extends JFrame { JButton b=new JButton("���我! "); My. Event(String s){ super(s); 匿名内部类 Container c=get. Content. Pane(); 做监听器 c. set. Layout(new Flow. Layout()); c. add(b); b. add. Action. Listener(new Action. Listener(){ public void action. Performed(Action. Event e){ b. set. Text("哈!你��我了! "); } }); set. Size(300, 100); set. Default. Close. Operation(EXIT_ON_CLOSE); set. Visible(true); } public static void main(String[] args) { new My. Event("事件�理示例 "); } }

public class My. Ev extends JFrame { JButton b 1=new JButton("上�! "), b 2=new

public class My. Ev extends JFrame { JButton b 1=new JButton("上�! "), b 2=new JButton("下�! "); My. Ev(String s){ super(s); Container c=get. Content. Pane(); c. set. Layout(new Flow. Layout()); c. add(b 1); c. add(b 2); set. Size(300, 100); set. Location(300, 200); set. Default. Close. Operation(EXIT_ON_CLOSE); set. Visible(true); my. Lis=newmy. Lis(); b 1. add. Action. Listener(lis); b 2. add. Action. Listener(lis); } class my. Lis implements Action. Listener { public void action. Performed(Action. Event e){ if(e. get. Source()==b 1)b 1. set. Text("上�啦!!! "); else b 2. set. Text("下�啦!!! "); } } public static void main(String[] args) { new My. Ev("事件�理示例 "); } }

public class My. Ev extends JFrame implements Action. Listener{ JButton b 1=new JButton("上�! "),

public class My. Ev extends JFrame implements Action. Listener{ JButton b 1=new JButton("上�! "), b 2=new JButton("下�! "); My. Ev(String s){ super(s); Container c=get. Content. Pane(); c. set. Layout(new Flow. Layout()); c. add(b 1); c. add(b 2); set. Size(300, 100); set. Location(300, 200); set. Default. Close. Operation(EXIT_ON_CLOSE); set. Visible(true); b 1. add. Action. Listener(this); b 2. add. Action. Listener(this); } public void action. Performed(Action. Event e){ if(e. get. Source()==b 1)b 1. set. Text("上�啦!!! "); else b 2. set. Text("下�啦!!! "); } public static void main(String[] args) { new My. Ev("事件�理示例 "); } }

public class My. Ev extends JFrame{ JButton b 1=new JButton("上�! "), b 2=new JButton("下�!

public class My. Ev extends JFrame{ JButton b 1=new JButton("上�! "), b 2=new JButton("下�! "); My. Ev(String s){ super(s); Container c=get. Content. Pane(); c. set. Layout(new Flow. Layout()); c. add(b 1); c. add(b 2); set. Size(300, 100); set. Location(300, 200); set. Default. Close. Operation(EXIT_ON_CLOSE); set. Visible(true); b 1. add. Action. Listener(new Action. Listener(){ public void action. Performed(Action. Event e){ b 1. set. Text("上�啦!!! "); } }); b 2. add. Action. Listener(new Action. Listener(){ public void action. Performed(Action. Event e){ b 2. set. Text("下�啦!!! "); } }); } public static void main(String[] args) { new My. Ev("事件�理示例 "); } }

适配器� u 为了使事件处理变得简单,Java 为具有多个方法的监 听器接口提供适配器类。适配器类实现并提供了一个事 件监听器接口中的所有的方法,但这些方法都是空方法 适配器类 事件监听器接口 Component. Adapter Component. Listener Container. Adapter

适配器� u 为了使事件处理变得简单,Java 为具有多个方法的监 听器接口提供适配器类。适配器类实现并提供了一个事 件监听器接口中的所有的方法,但这些方法都是空方法 适配器类 事件监听器接口 Component. Adapter Component. Listener Container. Adapter Container. Listener Focus. Adapter Focus. Listener private class My. Mouse. Adapter extends Mouse. Adapter { private Key. Adapter. Color bg. Color; Key. Listener public My. Mouse. Adapter (Color c){ bg. Color = c; } Mouse. Adapter Mouse. Listener public void mouse. Clicked(Mouse. Event mevent){ Mouse. Motion. Adapter Mouse. Motion. Listener set. Background(bg. Color); repaint(); Window. Adapter } } Window. Listener

List. Selection. Event事件�的使用 u 列表框(JLlist),可以触�列表��事件( List. Selection. Event)等。当用鼠�左���列表框 引起��状��生�化�,可以触�列表��事件。� JList 的 add. List. Selection.

List. Selection. Event事件�的使用 u 列表框(JLlist),可以触�列表��事件( List. Selection. Event)等。当用鼠�左���列表框 引起��状��生�化�,可以触�列表��事件。� JList 的 add. List. Selection. Listener(List. Selection. Listen er a)方法用来注册�听器 u 通��成�方法可以注册由参数 a指定的列表��事件� 听器。�列表��事件�听器是��接口 List. Selection. Listener的�或匿名�的�例�象�行 事件�理,可以通� new运算符�建 u 接口List. Selection. Listener只含有 value. Changed()方法。�接口的声明如下: public interface List. Selection. Listener extends Event. Listener { public void value. Changed(List. Selection. Event e); }

u 鼠�事件�听器( Mouse. Listener)接口的声明如下: public interface Mouse. Listener extends Event. Listener{ //用于�理鼠���的事件 public void

u 鼠�事件�听器( Mouse. Listener)接口的声明如下: public interface Mouse. Listener extends Event. Listener{ //用于�理鼠���的事件 public void mouse. Clicked(Mouse. Event e); //用于�理按下鼠�的事件 public void mouse. Pressed(Mouse. Event e); //用于�理放开鼠�的事件 public void mouse. Released(Mouse. Event e); //用于�理鼠��入�件的事件 public void mouse. Entered(Mouse. Event e); //用于�理鼠�离开�件的事件 public void mouse. Exited(Mouse. Event e); }

u 鼠标移动事件监听器( Mouse. Motion. Listener)接口的声明如下: public interface Mouse. Motion. Listener extends Event. Listener{ //用于处理鼠标拖动的事件

u 鼠标移动事件监听器( Mouse. Motion. Listener)接口的声明如下: public interface Mouse. Motion. Listener extends Event. Listener{ //用于处理鼠标拖动的事件 public void mouse. Dragged(Mouse. Event e); //用于处理鼠标移动的事件 public void mouse. Moved(Mouse. Event e); }

u 鼠标滚轮事件监听器(Mouse. Wheel. Listene) 接口的声明如下: public interface Mouse. Wheel. Listener extends Event. Listener {

u 鼠标滚轮事件监听器(Mouse. Wheel. Listene) 接口的声明如下: public interface Mouse. Wheel. Listener extends Event. Listener { //用于处理鼠标滚轮事件 public void mouse. Wheel. Moved(Mouse. Wheel. Event e); }

u ��事件�理用到的�听器有 2种:��事件 �听器( Key. Listener)和焦点事件�听器 (Focus. Listener) u ��事件�听器( Key. Listener)接口的声 明如下: public

u ��事件�理用到的�听器有 2种:��事件 �听器( Key. Listener)和焦点事件�听器 (Focus. Listener) u ��事件�听器( Key. Listener)接口的声 明如下: public interface Key. Listener extends Event. Listener{ //用于�理�入某个字符的事件 public void key. Typed(Key. Event e); //用于�理按下某个���的事件 public void key. Pressed(Key. Event e); //用于�理放开某个���的事件 public void key. Released(Key. Event e); }

u 焦点事件监听器(Focus. Listener)接口的声 明如下: public interface Focus. Listener extends Event. Listener{ //用于处理获得键盘焦点的事件 public void

u 焦点事件监听器(Focus. Listener)接口的声 明如下: public interface Focus. Listener extends Event. Listener{ //用于处理获得键盘焦点的事件 public void focus. Gained(Focus. Event e); //用于处理失去键盘焦点的事件 public void focus. Lost(Focus. Event e) ; } 【例6 -18】键盘事件处理的使用(Key. Use. java)

【例6 -19】常�菜�的使用( Menu. Use. java) public class Menu. Use extends JFrame{ public Menu. Use(){

【例6 -19】常�菜�的使用( Menu. Use. java) public class Menu. Use extends JFrame{ public Menu. Use(){ super("常�菜�的使用 "); JMenu. Bar m. Bar=new JMenu. Bar( ); this. set. JMenu. Bar(m. Bar); JMenu[] m={new JMenu("文件(F)"), new JMenu("�� (E)")}; char[][] m. C={{'F', 'E'}, {'O', 'S'}, {'C', 'V'}}; //数�,保存助�符 JMenu. Item[] [] m. I= {{new JMenu. Item("打开(O)"), new JMenu. Item("保存(S)")}, {new JMenu. Item("拷� (C)"), new JMenu. Item("粘帖(V)")} }; //�建菜�� for (int i=0; i<m. length; i++) { (m. C[i+1][j], java. awt. Event. CTRL_MASK, true) m. Bar. add(m[i]); //菜�添加到菜��中 m[i]. set. Mnemonic(m. C[0][i]); //�置菜�的助�符 for (int j=0; j<m. I[i]. length; j++) { m[i]. add(m. I[i][j]); //菜�中添加菜�� m. I[i][j]. set. Mnemonic(m. C[i+1][j]); //菜��中�置助�符 // �置菜��中的快捷�,一般菜��使用 ctrl,菜�使用 Alt m. I[i][j]. set. Accelerator(Key. Stroke. get. Key. Stroke("ctrl"+m. C[i+1][j])); m. I[i][j]. add. Action. Listener(new Action. Listener(){ public void action. Performed(Action. Event e) { JMenu. Item m. Item = (JMenu. Item)e. get. Source( ); System. out. println("运行菜�� : "+m. Item. get. Text()); } } ); //add. Action. Listener()�束 } //内部for循��束 } //外部for循��束 m[0]. insert. Separator(1); //在菜单项或下拉式菜单之间插入菜单分隔条 } //构造方法结束

6. 5. 2表格 u 二维表格通常由表头和表格数据组成 u JTable�用来�示和��常�二��元表 u �建一个空表格,看不到但存在: JTable example 1 = new

6. 5. 2表格 u 二维表格通常由表头和表格数据组成 u JTable�用来�示和��常�二��元表 u �建一个空表格,看不到但存在: JTable example 1 = new JTable (); n 或者: Default. Table. Model dt= new Default. Table. Model(); JTable example 1 = new JTable(dt);

u �建一个 8行6列的空表格: JTable example 2 = new JTable (8, 6);

u �建一个 8行6列的空表格: JTable example 2 = new JTable (8, 6);

u或者: Table. Model data. Model = new Abstract. Table. Model() { public int get.

u或者: Table. Model data. Model = new Abstract. Table. Model() { public int get. Column. Count() { return 6; } public int get. Row. Count() { return 8; } public Object get. Value. At(int row, int col) { return null; } }; JTable example 2 = new JTable(data. Model);

u或者: Object[] column. Name = {"姓名", "性� ", "家庭地址"}; Object[][] row. Data = {{"abc",

u或者: Object[] column. Name = {"姓名", "性� ", "家庭地址"}; Object[][] row. Data = {{"abc", "男", "�州 "}, {"def", " 女", "洛阳"}, {"ghj", "男", "开封"}, {"wer", "女", "新 � "}, {"cvb", "男", "南阳"}, }; Table. Model table. Model = new Default. Table. Model(row. Data, column. Name); JTable example 3 = new JTable(table. Model);

u Default. Table. Model�承自抽象� Abstract. Table. Mdel,二者都是 Table. Model的子� u Default. Table. Model��了以下三个 方法:

u Default. Table. Model�承自抽象� Abstract. Table. Mdel,二者都是 Table. Model的子� u Default. Table. Model��了以下三个 方法: n int get. Column. Count() n int get. Row. Count() n object get. Value. At()

u 抽象� Abstract. Table. Model��了 Table. Model的大部分方法,除了 get. Column. Count()、int get. Row. Count() 和object

u 抽象� Abstract. Table. Model��了 Table. Model的大部分方法,除了 get. Column. Count()、int get. Row. Count() 和object get. Value. At() u 因此使用Abstract. Table. Model��表 格�的主要任�就是���三个方法

u JTree构造方法如下: u JTree():建立一棵系�默�的� u JTree(Hashtable value):利用 Hashtable建立�,不�示根�点 u JTree(Object[] value):利用Object Array建立�,不�示根�点 u JTree(Tree.

u JTree构造方法如下: u JTree():建立一棵系�默�的� u JTree(Hashtable value):利用 Hashtable建立�,不�示根�点 u JTree(Object[] value):利用Object Array建立�,不�示根�点 u JTree(Tree. Model new. Model):利用 Tree. Model建立� u JTree(Tree. Node root):利用 Tree. Node建立� u JTree(Tree. Node root, boolean asks. Allows. Children):利用Tree. Node 建立�,并决定是否允�子�点的存在 u JTree(Vector value):利用Vector建立 �,不�示根�点

Tree. Node Mutable. Tree. Node Default. Mutable. Tree. Node u 【例6 -22】无参数构造方法的使用( No. Parameters.

Tree. Node Mutable. Tree. Node Default. Mutable. Tree. Node u 【例6 -22】无参数构造方法的使用( No. Parameters. Tree. java) u 【例6 -23】利用Hashtable建立� (Hashtable. Tree. java) u 【例6 -24】利用Default. Mutable. Tree. Node 建立�( Default. Mutable. Tree. Node. Tree. java) u 【例6 -25】利用Tree. Model建立�( Tree. Model. Tree. java) Tree. Model Default. Tree. Model

�� u 布局管理器�提供控制 GUI �件物理布局 的一种方式 n Flow. Layout n Border. Layout n Card.

�� u 布局管理器�提供控制 GUI �件物理布局 的一种方式 n Flow. Layout n Border. Layout n Card. Layout n Grid. Layout n Box. Layout n Group. Layout u 布局可通� set. Layout( ) 方法�行�置