通过例子学习swing图形用户界面设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
4 在框架中添加组件 class ButtonFrame extends JFrame {
山东农业大学 费玉奎
面板JPanel
JPanel是中间容器,它不能在屏幕上独立显示, 但可以容纳其它组件,然后作为一个整体放置 在JFrame中 JPanel的常用构造方法和成员方法有: JPanel( ) JPanel(LayoutManager layout) Component add(Component comp) //向面 板添加组件,继承自Container类
9
山东农业大学 费玉奎
把按钮加入面板,再把这个面板放在框架中。
class JPanelApp extends JFrame{ JPanelApp(){ setTitle("使用JPanel"); JPanel jp = new JPanel(); JButton jb = new JButton("OK"); jp.add(jb); //将按钮加入面板 add(jp); //将面板加入框架窗口的内容面板 } } public class Ex { public static void main(String[] args) { JPanelApp f = new JPanelApp(); f.setSize(200,150); f.setLocation(400, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
第五章
用Swing 编写图形界面
计算机系 费玉奎
用Swing设计图形界面的步骤
设置窗口框架(创建Jframe子类) 设置内容面板(创建容器对象) 对面板进行布局 加入图形组件 监听用户操作 响应用户操作,实现具体业务功能
2
山东农业大学 费玉奎
Swing 组件分类
1)顶层容器:JFrame 2)中间容器:JPanel 3) 基本组件:实现人际交互的组件,如 Jbutton, JComboBox, JList, JMenu, JSlider, JTextField。
13
6 颜色Color
山东农业大学 费玉奎
布局管理器
在容器中的所有组件的布局(位置和大小) 由布局管理器来控制,在java中提供了下面 的几种布局管理器. FlowLayout Borderlayout GridLayout CardLayout GridBagLayout
14
山东农业大学 费玉奎
布局管理器
1. BorderLayout
是顶层容器( JFrame, JDialog, 和 JApplet )的默 认布局管理器。 有五个位置组件:
15
山东农业大学 费玉奎
布局管理器
1. BorderLayout
16
山东农业大学 费玉奎
布局管理
Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JButton("Button 1 (NORTH)"), BorderLayout.NORTH); contentPane.add(new JButton("2 (CENTER)"), BorderLayout.CENTER); contentPane.add(new JButton("Button 3 (WEST)"), BorderLayout.WEST); contentPane.add(new JButton("Long-Named Button 4 (SOUTH)"), BorderLayout.SOUTH); contentPane.add(new JButton("Button 5 (EAST)"), BorderLayout.EAST);
11
山东农业大学 费玉奎
颜色Color
除标准颜色外,还可以使用下列构造方法自定 义颜色: Color(int red, int green, int blue) Component类中定义了如下方法设置组件的 背景色: void setBackground(Color c)
12
山东农业大学 费玉奎
23
费玉奎
事件处理
事件:键盘、鼠标、系统状态改变; 事件源:产生事件的组件; 监听器:系统随时去监视用户对输入设备(键盘和鼠标)的 操作 ; 事件处理机制 :监视到某个动作产生时,系统会去执行特 事件源注册: 定的事件 。 对象名.addActionListener(监听者对象)
wenku.baidu.com
3
山东农业大学 费玉奎
框架JFrame
Swing中,用JFrame类描述框架
JFrame的常用构造方法有: JFrame( ) JFrame(String title ) //创建一个标题为title的框架
4
山东农业大学 费玉奎
JFrame的常用成员方法:
框架JFrame
void setVisible(boolean b) //参数为true时设置框架 可见 void setSize(double w, double h) //设置框架的宽和高 void setLocation(int x, int y) //设置窗口左上角的坐标 Container getContentPane( ) //返回内容面板 void setDefaultCloseOperation(int operation) //设置 关闭窗口后的默认操作
17
山东农业大学 费玉奎
布局管理器
2. FlowLayout
组件按照加入的先后循序从左向右排列,一行排满后 之后就下转到下一行继续从左至右排列 每一行中的组件都居中排列
18
山东农业大学 费玉奎
布局管理器
2. FlowLayout
19
山东农业大学 费玉奎
布局管理
import java.awt.*; import javax.swing.*; public class FlowWindow extends JFrame { public FlowWindow() { Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout()); contentPane.add(new JButton("Button 1")); contentPane.add(new JButton("2")); contentPane.add(new JButton("Button 3")); contentPane.add(new JButton("Long-Named Button 4")); contentPane.add(new JButton("Button 5")); } public static void main(String args[]) { FlowWindow win = new FlowWindow(); win.setTitle("FlowLayout"); win.pack(); win.setVisible(true); } } 山东农业大学 费玉奎
20
布局管理器
3. GridLayout
基本布局策略是把容器的空间划分成若干行乘若 干列的网格区域,组件就位于这些划分出来的小 区域中。 所有的区域大小一样。
组件按从左到右,从上到下的方法加入。 用构造函数划分出网格的行数和列数, new GridLayout(行数,列数)。
21
山东农业大学 费玉奎
10
面板JPanel
山东农业大学 费玉奎
颜色Color
Color是类库中java.awt包中的类,它定义了 13种表示标准颜色的static常量:
BLACK BLUE CYAN DARK_GRAY GRAY GREEN LIGHT_GRAY MAGENTA ORANGE PINK RED WHITE YELLOW
5
山东农业大学 费玉奎
框架JFrame
继承JFrame定义一个新的框架类,并显示这 个框架类的对象。
import javax.swing.JFrame; class EmptyFrame extends JFrame { public EmptyFrame(String title) { super(title); //调用超类的构造方法 setSize(200, 150); } } public class Ex { public static void main(String[] args) { EmptyFrame f = new EmptyFrame("空的框架"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
显示一个空的框架窗口,框架的背景色设置 成红色。
public class Example9_4 { public static void main(String[] args) { JFrame f = new JFrame(); f.setTitle("红色背景"); f.setSize(200,150); f.setLocation(400, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container con = f.getContentPane(); //获取内容面板 con.setBackground(Color.RED); //设置背景色 f.setVisible(true); } }
7
山东农业大学 费玉奎
在框架窗口中添加按钮组件,并在屏幕的中央显示框 架
ButtonFrame() { super("按钮和框架"); JButton jb = new JButton("OK"); // 创建按钮对象jb Container con = getContentPane(); // 获取内容面板 con.add(jb); // 将按钮对象jb加入内容面板 } } public class Example9_2 { public static void main(String[] args) { JFrame bf = new ButtonFrame(); //超类变量引用子类对象 bf.setSize(200, 150); bf.setLocation(400, 300); bf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); bf.setVisible(true); } }
6
山东农业大学 费玉奎
在框架中添加组件
JFrame包含一个叫内容面板(content pane)的容 器。 向JFrame添加组件不是将组件添加到JFrame,而是 添加到内容面板中
向JFrame添加组件首先必须调用getContentPane( ) 方法获得JFrame的内容面板
内容面板是Container的对象,Container的add( )方 法将组件加入内容面板
布局管理器
3. GridLayout
22
山东农业大学 费玉奎
布局管理
import java.awt.*; import javax.swing.*; public class GridWindow extends JFrame { public GridWindow() { Container contentPane = getContentPane(); contentPane.setLayout(new GridLayout(3,2)); contentPane.add(new JButton("Button 1")); contentPane.add(new JButton("2")); contentPane.add(new JButton("Button 3")); contentPane.add(new JButton("Long-Named Button 4")); contentPane.add(new JButton("Button 5")); } 山东农业大学
4 在框架中添加组件 class ButtonFrame extends JFrame {
山东农业大学 费玉奎
面板JPanel
JPanel是中间容器,它不能在屏幕上独立显示, 但可以容纳其它组件,然后作为一个整体放置 在JFrame中 JPanel的常用构造方法和成员方法有: JPanel( ) JPanel(LayoutManager layout) Component add(Component comp) //向面 板添加组件,继承自Container类
9
山东农业大学 费玉奎
把按钮加入面板,再把这个面板放在框架中。
class JPanelApp extends JFrame{ JPanelApp(){ setTitle("使用JPanel"); JPanel jp = new JPanel(); JButton jb = new JButton("OK"); jp.add(jb); //将按钮加入面板 add(jp); //将面板加入框架窗口的内容面板 } } public class Ex { public static void main(String[] args) { JPanelApp f = new JPanelApp(); f.setSize(200,150); f.setLocation(400, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
第五章
用Swing 编写图形界面
计算机系 费玉奎
用Swing设计图形界面的步骤
设置窗口框架(创建Jframe子类) 设置内容面板(创建容器对象) 对面板进行布局 加入图形组件 监听用户操作 响应用户操作,实现具体业务功能
2
山东农业大学 费玉奎
Swing 组件分类
1)顶层容器:JFrame 2)中间容器:JPanel 3) 基本组件:实现人际交互的组件,如 Jbutton, JComboBox, JList, JMenu, JSlider, JTextField。
13
6 颜色Color
山东农业大学 费玉奎
布局管理器
在容器中的所有组件的布局(位置和大小) 由布局管理器来控制,在java中提供了下面 的几种布局管理器. FlowLayout Borderlayout GridLayout CardLayout GridBagLayout
14
山东农业大学 费玉奎
布局管理器
1. BorderLayout
是顶层容器( JFrame, JDialog, 和 JApplet )的默 认布局管理器。 有五个位置组件:
15
山东农业大学 费玉奎
布局管理器
1. BorderLayout
16
山东农业大学 费玉奎
布局管理
Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JButton("Button 1 (NORTH)"), BorderLayout.NORTH); contentPane.add(new JButton("2 (CENTER)"), BorderLayout.CENTER); contentPane.add(new JButton("Button 3 (WEST)"), BorderLayout.WEST); contentPane.add(new JButton("Long-Named Button 4 (SOUTH)"), BorderLayout.SOUTH); contentPane.add(new JButton("Button 5 (EAST)"), BorderLayout.EAST);
11
山东农业大学 费玉奎
颜色Color
除标准颜色外,还可以使用下列构造方法自定 义颜色: Color(int red, int green, int blue) Component类中定义了如下方法设置组件的 背景色: void setBackground(Color c)
12
山东农业大学 费玉奎
23
费玉奎
事件处理
事件:键盘、鼠标、系统状态改变; 事件源:产生事件的组件; 监听器:系统随时去监视用户对输入设备(键盘和鼠标)的 操作 ; 事件处理机制 :监视到某个动作产生时,系统会去执行特 事件源注册: 定的事件 。 对象名.addActionListener(监听者对象)
wenku.baidu.com
3
山东农业大学 费玉奎
框架JFrame
Swing中,用JFrame类描述框架
JFrame的常用构造方法有: JFrame( ) JFrame(String title ) //创建一个标题为title的框架
4
山东农业大学 费玉奎
JFrame的常用成员方法:
框架JFrame
void setVisible(boolean b) //参数为true时设置框架 可见 void setSize(double w, double h) //设置框架的宽和高 void setLocation(int x, int y) //设置窗口左上角的坐标 Container getContentPane( ) //返回内容面板 void setDefaultCloseOperation(int operation) //设置 关闭窗口后的默认操作
17
山东农业大学 费玉奎
布局管理器
2. FlowLayout
组件按照加入的先后循序从左向右排列,一行排满后 之后就下转到下一行继续从左至右排列 每一行中的组件都居中排列
18
山东农业大学 费玉奎
布局管理器
2. FlowLayout
19
山东农业大学 费玉奎
布局管理
import java.awt.*; import javax.swing.*; public class FlowWindow extends JFrame { public FlowWindow() { Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout()); contentPane.add(new JButton("Button 1")); contentPane.add(new JButton("2")); contentPane.add(new JButton("Button 3")); contentPane.add(new JButton("Long-Named Button 4")); contentPane.add(new JButton("Button 5")); } public static void main(String args[]) { FlowWindow win = new FlowWindow(); win.setTitle("FlowLayout"); win.pack(); win.setVisible(true); } } 山东农业大学 费玉奎
20
布局管理器
3. GridLayout
基本布局策略是把容器的空间划分成若干行乘若 干列的网格区域,组件就位于这些划分出来的小 区域中。 所有的区域大小一样。
组件按从左到右,从上到下的方法加入。 用构造函数划分出网格的行数和列数, new GridLayout(行数,列数)。
21
山东农业大学 费玉奎
10
面板JPanel
山东农业大学 费玉奎
颜色Color
Color是类库中java.awt包中的类,它定义了 13种表示标准颜色的static常量:
BLACK BLUE CYAN DARK_GRAY GRAY GREEN LIGHT_GRAY MAGENTA ORANGE PINK RED WHITE YELLOW
5
山东农业大学 费玉奎
框架JFrame
继承JFrame定义一个新的框架类,并显示这 个框架类的对象。
import javax.swing.JFrame; class EmptyFrame extends JFrame { public EmptyFrame(String title) { super(title); //调用超类的构造方法 setSize(200, 150); } } public class Ex { public static void main(String[] args) { EmptyFrame f = new EmptyFrame("空的框架"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
显示一个空的框架窗口,框架的背景色设置 成红色。
public class Example9_4 { public static void main(String[] args) { JFrame f = new JFrame(); f.setTitle("红色背景"); f.setSize(200,150); f.setLocation(400, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container con = f.getContentPane(); //获取内容面板 con.setBackground(Color.RED); //设置背景色 f.setVisible(true); } }
7
山东农业大学 费玉奎
在框架窗口中添加按钮组件,并在屏幕的中央显示框 架
ButtonFrame() { super("按钮和框架"); JButton jb = new JButton("OK"); // 创建按钮对象jb Container con = getContentPane(); // 获取内容面板 con.add(jb); // 将按钮对象jb加入内容面板 } } public class Example9_2 { public static void main(String[] args) { JFrame bf = new ButtonFrame(); //超类变量引用子类对象 bf.setSize(200, 150); bf.setLocation(400, 300); bf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); bf.setVisible(true); } }
6
山东农业大学 费玉奎
在框架中添加组件
JFrame包含一个叫内容面板(content pane)的容 器。 向JFrame添加组件不是将组件添加到JFrame,而是 添加到内容面板中
向JFrame添加组件首先必须调用getContentPane( ) 方法获得JFrame的内容面板
内容面板是Container的对象,Container的add( )方 法将组件加入内容面板
布局管理器
3. GridLayout
22
山东农业大学 费玉奎
布局管理
import java.awt.*; import javax.swing.*; public class GridWindow extends JFrame { public GridWindow() { Container contentPane = getContentPane(); contentPane.setLayout(new GridLayout(3,2)); contentPane.add(new JButton("Button 1")); contentPane.add(new JButton("2")); contentPane.add(new JButton("Button 3")); contentPane.add(new JButton("Long-Named Button 4")); contentPane.add(new JButton("Button 5")); } 山东农业大学