day23 GUIWord下载.docx
- 文档编号:18604220
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:42
- 大小:184.25KB
day23 GUIWord下载.docx
《day23 GUIWord下载.docx》由会员分享,可在线阅读,更多相关《day23 GUIWord下载.docx(42页珍藏版)》请在冰豆网上搜索。
3.JavaGUIAPI
GUIAPI包含的类分为三个部分:
组件类(componentclass)容器类(containerclass),和辅助类(helperclass)
1.组件类是用来创建用户图形界面的,例如JButton,JLabel,JTextField.
2.容器类是用来包含其他组件的,例如JFrame,JPanel
3.辅助类是用来支持GUI组件的,例如Color,Font
3.1.组件类
在图形用户界面程序中当我们想要创建按钮、复选框和滚动条等这些可以显示在屏幕上的对象,该如何创建。
其实这些都属于一类叫做组件类。
AWT中的组件根类
类Component
java.lang.Object
java.awt.Component
Swing中的组件根类
javax.swing
类JComponent
java.awt.Container
javax.swing.JComponent
组件类的实例可以显示在屏幕上.Component类是包括容器类的所有用户界面类的根类是java.awt中的类,对应的Swing中的是Jcomponent.了解了Component和JComponent都是抽象类.所以不能使用new关键字创建对象.所以需要使用它们的具体的实现类来创建对象.
在AWT中典型图形用户界面中的按钮(Button)、复选框(Checkbox)和滚动条(Scrollbar)都是组件类,都是Component类的子类.
在Swing中的GUI组件,有对应的JButton,JCheckBox,JscrollBar
继承关系图(AWT)
3.2.容器类
容器(Container),是一个特殊的组件,该组件可以通过add()添加其他组件。
容器类适用于盛装其他GUI组件的GUI组件.例如PanelFrameDialog都是AWT组件的容器类.对应的Swing组件的容器类是JPanelJFrameJDialog
3.3.GUI辅助类
用来描述GUI组件的属性,例如图像的颜色,字体等.注意:
辅助类是在java.awt中的
3.4.GUI运行原理
在JDK的bin目录中有javaw.exe.javaw.exe是java在window中专门用于执行GUI程序.
4.体验GUI
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
publicclassDemo{
publicstaticvoidmain(String[]args){
//创建JFrame
JFrameframe=newJFrame("
hello,world"
);
//设置尺寸
frame.setSize(200,100);
//JFrame在屏幕居中
frame.setLocationRelativeTo(null);
//JFrame关闭时的操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示JFrame
frame.setVisible(true);
}
}
5.Jframe框架
JFrame(框架)是一个容器
创建一个用户界面需要创建一个JFrame来存放用户界面组件.例如存放按钮,文本框。
类JFrame
java.awt.Window
java.awt.Frame
javax.swing.JFrame
5.1.创建一个框架
publicclassDemo1{
我的frame"
注意:
需要调用setVisible(true)方法后才会显示框架
运行程序会在窗口的左上角显示一个窗口,但是只能显示标题栏,而且关闭JFrame时,程序程序没有停止.
所以需要完成如下需求:
1:
设置Jframe的宽度和高度
2:
让Jframe显示在屏幕中间
3:
关闭Jframe时,程序会停止
5.1.1.设置JFrame的宽度和高度
java.awt.Window.setSize(intwidth,intheight)
查找API文档,查看setSize方法,可以指定框架的宽度和高度.参数类型是int,注意是以像素为单位,普通的笔记本的屏幕分辨率为1280*800或者1366*768.注意:
分辨率表示每平方英寸的像素数.屏幕分辨率越高,屏幕的像素越多.所以分辨率越高看到的细节就越多.
setSize方法被定义在java.awt.Component类中,被Component的子类java.awt.Window重写.而Jframe以继承了Windiws类所以也具备该方法.
5.1.2.JFrame显示在屏幕中间
setLocationRelativeTo()方法
java.awt.Window.setLocationRelativeTo(Componentc)
设置窗口相对于指定组件的位置。
如果c为null,则此窗口将置于屏幕的中央。
setLocationRelativeTo(null)方法可以在屏幕上居中显示框架.
如果不想要设置在中间,可以使用
setLocation(200,100);
5.1.3.关闭JFrame程序停止
setDefaultCloseOperation(intoperation)方法
javax.swing.JFrame.setDefaultCloseOperation(intoperation)
该方法告诉程序,当框架关闭时结束程序.方法的参数是JFrame的常量EXIT_ON_CLOSE
添加完毕
5.2.框架中添加组件
上述案例中的框架是空的.可以通过add方法在框架中添加组件
java.awt.Container.add(Componentcomp)
代码:
publicstaticvoidmain(String[]args){
//创建按钮
JButtonbutton=newJButton("
OK"
//向frame中添加一个按钮
frame.add(button);
运行程序,会显示上图所示窗口.调整窗口的大小,按钮都是显示在窗口的中央,并且占满整个框架.这是因为组件(本例就是按钮)是被布局管理器放到框架中的.默认布局管理器就是将按钮放到中央.
备注:
可以通过f.setVisible(false);
隐藏窗体f.dispose();
关闭窗口
设置图片:
setIconImage(Toolkit.getDefaultToolkit().createImage("
png-0015.png"
));
6.JoptionPane对话框
显示一个带有OK
按钮的模态对话框。
下面是几个使用showMessageDialog
的例子:
Java代码
JOptionPane.showMessageDialog(null,"
错误信息提示"
"
标题"
JOptionPane.INFORMATION_MESSAGE);
效果如下:
1.JOptionPane.showMessageDialog(jPanel,
"
提示消息"
JOptionPane.WARNING_MESSAGE);
1.JOptionPane.showMessageDialog(null,
提示消息."
JOptionPane.ERROR_MESSAGE);
JOptionPane.PLAIN_MESSAGE);
1.2showOptionDialog
这个函数可以改变显示在按钮上的文字。
你还可以执行更多的个性化操作。
常规的消息框:
1.int
n
=
JOptionPane.showConfirmDialog(null,
你高兴吗?
JOptionPane.YES_NO_OPTION);
//i=0/1
输入框:
StringinputValue=JOptionPane.showInputDialog("
请输入你给我金额"
7.面板(Panel)
面板也是一个容器的组件,可以在上面添加
注意:
面板不能单独使用,必须在顶层窗口中使用。
8.常见组件
一些常用的组件例如:
JLabel,
JButton,
JTextField
JPassworldField
JRadioButton
JCheckBox
JTextArea
JList
JMenuBar
JMenu
JMenultem
8.1.Button按钮
Java中的Swing提供了常规按钮,单选按钮,复选按钮和菜单按钮
8.1.1.JButtion普通按钮
按钮Button是点击时触发动作事件的组件.
8.1.2.JRadioButton单选按钮
单选按钮,可以让用户从一组选项中选择一个单一条目.例如性别.
使用单选按钮时注意将,单选按钮放在一组,需要使用java.swing.ButtonGroup.的add方法,添加到一个组中,位于同一个组的单选按钮就是互斥的.如果没有将单选按钮放在一个组中,就是独立的..我们让然需要把按钮添加在容器中.因为ButtonGroup添加到容器中..
8.1.3.JCheckBox复选框
多选
8.2.JLabel标签
8.3.JTextField文本域
8.4.JTextArea文本区域
8.5.JComboBox组合框
8.6.JList列表框
例如:
String[]data={"
one"
two"
three"
};
JListlist=newJList(data);
p1.add(list);
8.7.JmenuBar菜单条
JMenu菜单
JMenultem菜单项
菜单条(MenuBar)中包含菜单(Menu),菜单中中包含菜单项(MenuItem)
注意添加的顺序。
例如:
记事本的菜单条中包含文件、编辑、格式、查看、帮助菜单。
其中文件菜单中包含新建、打开、保存、另存为等菜单项
案例综合。
publicclassCommonComponentextendsJFrame{
publicCommonComponent(){
//面板
JPanelp1=newJPanel();
add(p1);
//标签
JLabelname=newJLabel("
用户名:
p1.add(name);
//文本域
JTextFieldfield=newJTextField(8);
p1.add(field);
JLabelpasswd=newJLabel("
密码"
p1.add(passwd);
//密码域
JPasswordFieldpass=newJPasswordField(8);
p1.add(pass);
//单选按钮
JLabelgender=newJLabel("
性别"
p1.add(gender);
JRadioButtonmale=newJRadioButton("
男"
JRadioButtonfemale=newJRadioButton("
女"
//单选按钮组,同一个单选按钮组的互斥.
ButtonGroupgroup=newButtonGroup();
group.add(male);
group.add(female);
//注意,单选按钮组不能添加进容器
p1.add(male);
p1.add(female);
//复选框
JLabellike=newJLabel("
爱好:
p1.add(like);
JCheckBoxeat=newJCheckBox("
吃饭"
JCheckBoxmovie=newJCheckBox("
看电影"
JCheckBoxsleep=newJCheckBox("
睡觉"
p1.add(eat);
p1.add(movie);
p1.add(sleep);
JLabelinfo=newJLabel("
个人简介"
p1.add(info);
JTextAreaarea=newJTextArea(20,20);
p1.add(area);
//列表
String[]data={"
//普通按钮
注册"
p1.add(button);
//菜单条
JMenuBarbar=newJMenuBar();
//菜单
JMenumenu=newJMenu("
文件"
//菜单选项
JMenuItemmyNew=newJMenuItem("
新建"
JMenuItemmyOpen=newJMenuItem("
打开"
bar.add(menu);
menu.add(myNew);
menu.add(myOpen);
add(bar,BorderLayout.NORTH);
CommonComponentframe=newCommonComponent();
frame.setTitle("
常用组件"
frame.setSize(400,400);
//自适应
frame.pack();
样式如下:
因为面板默认是流式布局.
9.布局管理器
Java的GUI组件都放置在容器中,他们的位置是由容器的布局管理器来管理的.在前面的程序中,并没有指定将OK按钮放置在框架的什么位置,但是,Java知道应该把它放置在哪里,因为在后台工作的布局管理器能够将组件放到正确的位置.布局管理器是使用布局管理器类创建的.
我们可以使用setLayout()方法在容器中设置布局管理器.
我们将要了解FlowLayoutGridLayoutBorderLayout
9.1.FlowLayout流式布局
FlowLayout(流式布局)是最简单布局管理器.Jpanel容器默认的布局管理器
流式布局,按照组件添加的顺序,从左到到右将组件排列在容器中.当放满一行,就开始新的一行.在FlowLayout有3个常量FlowLayout可以指定组件的对齐方式.
LEFT每一行组件都应该是左对齐的
RIGHT每一行组件都应该是右对齐的
CENTER每一行组件都应该是居中的
还可以指定组件之间的以像素为单位的间隔.
intgetHgap()
获取组件之间以及组件与Container的边之间的水平间隙。
intgetVgap()
获取组件之间以及组件与Container的边之间的垂直间隙。
voidsetHgap(inthgap)
设置组件之间以及组件与Container的边之间的水平间隙。
voidsetVgap(intvgap)
设置组件之间以及组件与Container的边之间的垂直间隙。
这个布局管理器的对其方式默认值是CENTER
这个布局管理器的水平间隔默认值是5个像素
这个布局管理器的垂直间隔默认是是5个像素
创建该布局管理器
FlowLayout()
构造一个新的FlowLayout,它是居中对齐的,默认的水平和垂直间隙是5个单位。
FlowLayout(intalign)
构造一个新的FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是5个单位。
FlowLayout(intalign,inthgap,intvgap)
创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。
案例:
创建框架,使用流失布局管理器.向该框架添加三个标签和文本域.
publicclassShowFlowLayoutextendsJFrame{
publicShowFlowLayout(){
super.setLayout(newFlowLayout(FlowLayout.LEFT,10,20));
add(newJLabel("
姓名:
add(newJTextField(8));
邮箱:
电话:
ShowFlowLayoutframe=newShowFlowLayout();
FlowLayout"
frame.setSize(500,200);
该案例在本类main方法中创建了一个本类对象.该类的构造函数中创建并且添加组件.
该案例使用了FlowLayout管理器在框架放置组件.如果改变框架的大小.组建会自动的重新排列,以适应框架.
如果将同一个按钮在框架中添加10次,那么该框架只会出现一次,将一个按钮向容器中添加多以和一次是一样的.
9.2.GridLayout网格布局
GridLyaout是以网格形式管理组件的.组件按照他们添加的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- day23 GUI
![提示](https://static.bdocx.com/images/bang_tan.gif)