全部章节   >>>>


本章目录

10.1 JFrame窗口容器

10.1.1 Swing介绍

10.1.2 JFrame窗口容器应用

JFrame常用方法

10.1.3 实践练习

10.2 布局管理器

10.2.1 FlowLayout流式布局管理器

FlowLayout构造方法说明

10.2.2 GridLayout网格布局管理器

GridLayout构造方法说明

10.2.3 BoraderLayout边框布局管理器

BorderLayout构造方法说明

10.2.4 实践练习

10.3 常用控件(一)

10.3.1 JLabel标签组件

10.3.2 JTextField与JPasswordField标签组件

10.3.3 JButton按钮组件

10.3.4 JPanel面板组件

10.3.5 实践练习

10.4 常用控件(二)

10.4.1 JComboBox选择框组件

JComboBox常用方法说明

10.4.2 JRadioButton单选按钮和JCheckBox复选框组件

10.4.3 实践练习

总结:


10.1 JFrame窗口容器

10.1.1 Swing介绍

  • Swing 是一个为Java设计的GUI( Graphical User Interface,图形用户界面)工具包。
  • Swing由纯Java实现,不再依赖于本地平台的GUI,因此可以在所有操作系统平台上都保持相同的界面外观。
  • 独立于本平台的Swing组件称为轻量级组件。
  • Swing组件位于javax.swing包。
  • Swing组件采用MVC(Model-View-Controller,即模型-视图-控制器)的设计模式,其中模型用于维护各种状态,视图是组件可视化的表现,控制器用于对各种事件、组件做出相应的响应。当模型发生改变时,它会通知所有依赖它的视图,视图会根据模型数据进行更新。

10.1.2 JFrame窗口容器应用

  • GUI应用程序都需要使用窗体作为最外层的容器,应用中需要使用的其他控件均直接或间接放在窗体中。
  • 在Swing GUI中,JFrame是一个顶层容器,可以存放其他组件。
  • JFrame类包含了许多实用方法,如定义窗口标题、窗体边框、窗口的大小和位置等。通常通过继承JFrame类来创建一个窗口。

创建窗体的两种方式:

  1. 直接编写代码,调用JFrame类的构造方法,这种方式适用于窗体简单的情况。
  2. 继承JFrame类。在继承的类中编写代码,对窗体进行详细的描述,这种方式适用于窗体较复杂的情况。

注意:

JFrame类构造方法创建的窗体是不可见的,需要开发人员通过硬编码的方式,设置窗体的可见性。

JFrame类构造方法创建的窗体默认的大小为0 x 0像素,默认的坐标是(0,0),因此在开发中需要设置窗体的大小。

JFrame常用方法

方法名

说明

void  setLayout(LayoutManager mg)

设置当前窗体使用的布局管理器

void setTitle(String title)

设置当前窗体的标题

void setBounds(int x,int y,int width,

int hight)

设置当前窗体距离桌面坐标原点的位置,x代表横坐标,y代表纵坐标。以及当前窗体的大小,width代表窗体的宽,height代表窗体的高

void setSize(int width,int height)

设置当前窗体的宽和高

void setVisible(boolean b)

设置当前窗体是否可见,参数值为true,表示可以见,为false则表示隐藏当前窗体

void setIconImage(Image image)

设置当前窗体的图标

Component add(Component c)

将指定组件添加至当前窗体中

示例:创建JFrame窗体

public class JFrameExample {public void init(){//创建窗体对象JFrame frame=new JFrame();//修改窗体图标为“android.gif”ImageIcon ico=new ImageIcon("E://android.gif");//设置JFrame窗体的显示位置和大小frame.setBounds(100,100, 450, 300);//设置窗体的标题frame.setTitle("JFrame窗体");//设置窗体的图标frame.setIconImage(ico.getImage());//窗体显示frame.setVisible(true);}public static void main(String[] args) {JFrameExample jfe=new JFrameExample();jfe.init();}
}

10.1.3 实践练习

10.2 布局管理器

10.2.1 FlowLayout流式布局管理器

  • 类似流程或文本处理器处理一段文字,它将组件一排一排依次放置。
  • 常用于JRadioButton单选按钮或JCheckBox复选框等组件的排列。

FlowLayout构造方法说明

构造方法

说明

FlowLayout()

使用居中方式构造FlowLayout的布局

FlowLayout(int align)

使用给定对齐方式,且垂直和水平间隔为5个像素。

例如,setLayout(new FlowLayout(FlowLayout.LEFT));

FlowLayout(int align,int hgap,int vgap)

使用给定对齐方式,且指定垂直和水平间隔。容器默认居中放置。hgap和vgap为组件之间垂直和水平间隔(单位为像素)。

例如,setLayout(new FlowLayout(FlowLayout.RIGHT,20,40));

示例: 按流式布局管理器格式放置兴趣课程单选按钮

public class FlowLayExample extends JFrame {public FlowLayExample() {super("FlowLayout布局管理器");}public void init(){JRadioButton jrb1=new JRadioButton("音乐"); //创建单选按钮JRadioButton jrb2=new JRadioButton("体育");...this.add(jrb1);this.add(jrb2);//创建FlowLayout管理器对象FlowLayout fl=new FlowLayout(FlowLayout.RIGHT,5,15);//指定JFrame窗体布局管理器this.setLayout(fl);this.setSize(300,150);this.setVisible(true);   }public static void main(String[] args) {FlowLayExample layExample=new FlowLayExample();layExample.init();}
}

10.2.2 GridLayout网格布局管理器

  • 网格布局管理器即GridLayout布局管理,其布局管理格式是将窗体分割成行数×列数的格子状版面,组件按照由左至右,由上而下的次序排列。

GridLayout构造方法说明

构造方法

说明

GridLayout

构造具有一行一列的Gridlayout的布局

GridLayout(int rows,int cloumns)

构造指定行数和列数的GridLayout的布局

GridLayout(int rows,

int cloumns,int hgap,int vgap)

构造指定行数和列数的、各组件之间的相互间隔的GridLayout的布局

示例:按网格布局管理器格式放置JButton按钮

public class GridLayoutExample extends JFrame{//创建布局管理器private GridLayout gridLayout=new GridLayout();...public void init(){JButton btn1=new JButton("按钮1");JButton btn2=new JButton("按钮2");...//设置窗体的布局格式this.setLayout(gridLayout);gridLayout.setColumns(3);//设置列数gridLayout.setHgap(5);//设置垂直间距gridLayout.setRows(3);//设置行数gridLayout.setVgap(5);//设置水平间距//依次将标签、文本框、下拉列表框添加到this中this.add(btn1,null);this.add(btn2,null);...//设置窗体可见this.setVisible(true);}...
}

GridLayout网格布局与FlowLayout流式布局相同,都会自动管理组件的大小和位置,两者的不同之处是,网格布局会尽可能的将组件充满窗口,而流式布局则不会。

10.2.3 BoraderLayout边框布局管理器

  • BorderLayout的布局管理器将容器内的空间分为东、西、南、北、中5个区域,分别用EAST、WEST、SOUTH、NORTH、CENTER表示。
  • 向容器中加入每个组件时,都要指明其放在容器的哪个区域,如果某个区域没有分配组件,则其他组件可以占据该区域的控件。

BorderLayout构造方法说明

构造方法

说明

BorderLayout()

构造BorderLayout的布局

BorderLayout(int hgap,int vgap)

构造组件之间具有指定间隔的BorderLayout布局

示例:按边框布局管理器格式放置JButton按钮

public void init(){//创建JButton对象btn1=new JButton("东");btn2=new JButton("南");btn3=new JButton("西");btn4=new JButton("北");btn5=new JButton("中");BorderLayout bl=new BorderLayout();this.getContentPane().setLayout(bl);//将5个按钮分别添加到窗口的不同区域this.add(btn1,BorderLayout.EAST);this.add(btn2,BorderLayout.WEST);this.add(btn3,BorderLayout.SOUTH);this.add(btn4,BorderLayout.NORTH);this.add(btn5,BorderLayout.CENTER);this.setSize(450,300);this.setVisible(true);
}

10.2.4 实践练习

10.3 常用控件(一)

10.3.1 JLabel标签组件

  • JLabel类创建标签组件,它除了能显示文字外,还允许添加图像,且当鼠标移动到标签位置时,会显示一段文字提示

示例:JLabel标签示例

//通过调用父类构造器为窗体创建名称
super("JLabel组件窗口");
//设置流式布局管理器
this.setLayout(new FlowLayout(100,100,100));
//创建图片ImageIcon对象
Icon icon=new ImageIcon("e://mst.png");
//设置标签中仅包含文字
label1=new JLabel(icon);
//设置标签中仅包含文字、图像水平居中
label2=new JLabel("MStanford");
label2.setIcon(icon);
//设置标签的提示信息
label1.setToolTipText("只是一个Label标签");
//添加label1
this.add(label1);
this.add(label2);

10.3.2 JTextField与JPasswordField标签组件

  • JTextField只能用于输入单行文本,如果文本的长度超出了控件可以显示的范围,其会自动滚动文本。
  • 针对JTextField,所有的剪切、复制、粘贴及其快捷键的操作都可以自动工作。
  • JPasswordField密码框组件。继承自JTextField,因此其操作方法与JTextFiled相同。

示例:JTextField和JPasswordField标签示例

this.setSize(360,230);
//使用空布局,容器中的组件可通过坐标定位
this.setLayout(null);
jLabel1=new JLabel("账号");
//设置jLabel1的位置,4个参数代表居左、居上,文字的宽、高
jLabel1.setBounds(30,38,80,25);
jLabel2=new JLabel("密码");
jLabel2.setBounds(30,80,80,25);
//jTextField1的位置4个参数代表居左、居上,文本框的宽、高
jTextField.setBounds(100,40,160,25);
jPasswordField.setBounds(100,80,160,25);
//将组件添加至容器中
this.add(jLabel1);
this.add(jLabel2);
this.add(jTextField);
this.add(jPasswordField);

10.3.3 JButton按钮组件

  • JButton可以设置文字、图形,还可以设置底色、动态效果等。

示例:JButton按钮组件示例

Icon icon1=new ImageIcon("E://sure.png");
Icon icon2=new ImageIcon("E://refresh.jpg");
Icon icon3=new ImageIcon("E://download.jpg");
//创建按钮,并在按钮上添加图标
JButton  button1=new JButton("确定",icon1);
JButton  button2=new JButton("刷新",icon2);
JButton  button3=new JButton("下载",icon3);this.add(button1);
this.add(button2);
this.add(button3);
this.setSize(600,200);
this.setVisible(true);

10.3.4 JPanel面板组件

  • JPanel面板是非常常用的非顶层容器之一,可以将其他控件放在JPanel中,以组成一个子界面。
  • 所谓的非顶层容器通常扮演双重角色,对于添加到其中的控件,其扮演容器的角色,而对于其要添加进的容器,则其扮演一般控件的角色。
  • 通过嵌套使用JPanel,可以搭建出复杂美观的界面。

示例:JPanel和布局管理器综合示例

 public void init(){//设置布局管理器GridLayout gl=new GridLayout();BorderLayout  bl=new BorderLayout();FlowLayout fl=new FlowLayout();//创建按钮JButton button1=new JButton("确定");JButton button2=new JButton("取消");//创建标签JLabel label1=new JLabel("姓名");JLabel label2=new JLabel("性别");JLabel label3=new JLabel("年龄");//创建文本框JTextField text1=new JTextField();JTextField text2=new JTextField();JTextField text3=new JTextField();//设置窗口大小this.setSize(400,192);this.setLayout(bl);//将两个按钮放入到jPanel1中,将jPanel1设置为FlowLayout布局jPanel1.setLayout(fl);//将button放置于jPaenl1中jPanel1.add(button1);jPanel1.add(button2);//设置jPanel2为GridLayout布局,3行2列的布局格式jPanel2.setLayout(gl);gl.setColumns(2);//设置列数gl.setHgap(5);//这是垂直间距gl.setRows(3);//设置行数gl.setVgap(5);//设置水平间距//依次将标签、文本框添加到jPanel2中jPanel2.add(label1);jPanel2.add(text1);jPanel2.add(label2);jPanel2.add(text2);jPanel2.add(label3);jPanel2.add(text3);//依次将jPanel1、jPanel2添加到窗口的下方和中间位置this.add(jPanel1,BorderLayout.SOUTH);this.add(jPanel2,BorderLayout.CENTER);…}

10.3.5 实践练习

10.4 常用控件(二)

10.4.1 JComboBox选择框组件

JComboBox为下拉列表框组件,其特点是将所有选项折叠收藏,仅显示前面一个选项或被用户选中的某一个选项。

JComboBox常用方法说明

构造方法

说明

addItem(Object  anObject)

为下拉列表添加下拉项

setMaximumRowCount(int count)

设置JComboBox显示的最大行数

示例:使用JComboBox下拉显示国籍信息

//创建下拉列表框对象
jComboBox=new JComboBox();//为列表添加下拉选项
jComboBox.addItem("中国");
jComboBox.addItem("美国");
jComboBox.addItem("德国");
jComboBox.addItem("韩国");
jComboBox.addItem("英国");
//设置下拉列表框最多显示4行
jComboBox.setMaximumRowCount(4);
//将下拉列表框添加到jPanel中
jPanel.add(jLabel);
jPanel.add(jComboBox);
this.add(jPanel);
this.setSize(300, 200);
this.setVisible(true);

10.4.2 JRadioButton单选按钮和JCheckBox复选框组件

  • JRadionButton表示单选按钮。
  • ButtonGroup类为单选按钮提供多选一功能,在一组单选按钮中,用户只能选择一个单选按钮,当选择一个单选按钮时,此单选按钮的状态为“ON”,其余单选按钮的状态为“OFF”
  • JCheckBox表示复选框,一组复选框中可以有多个复选框同时被选中。

使用JRadioButton组件,首先需要创建ButtonGroup对象,然后将创建的JRadioButton组件对象,添加至ButtonGroup对象中。

示例:JRadioButton单选按钮和JCheckBox复选框组件示例

//创建单选按钮组对象
private ButtonGroup group=new ButtonGroup();
jLabel=new JLabel("兴趣");
jLabe2=new JLabel("性别");
//复选框
box1=new JCheckBox("台球");
box2=new JCheckBox("篮球");
box3=new JCheckBox("编程");
jLabe2=new JLabel("性别");
//单选按钮
jbr1=new JRadioButton("男性");
jbr2=new JRadioButton("女性");
//添加单选按钮到单选按钮组
group.add(jbr1);
group.add(jbr2);
//添加单选按钮到窗口
this.add(jLabel);this.add(box1);this.add(box2);
this.add(box3);this.add(jLabe2);this.add(jbr1);this.add(jbr2);

10.4.3 实践练习

总结:

Swing是一个为Java设计的GUI( Graphical User Interface,图形用户界面)工具包,它由纯Java实现,不再依赖于本地平台的GUI,因此可以在所有操作系统平台上都保持相同的界面外观。Swing组件为轻量级组件。

JFrame是一个顶层容器,可以存放其他组件。

常见的布局管理器

FlowLayout流式布局管理器:类似流程或文本处理器处理一段文字,它将组件一排一排依次放置。

GridLayout网格布局管理器:其布局管理格式是将窗体分割成行数×列数的格子状版面,组件按照由左至右,由上而下的次序排列。

和BorderLayout边框布局管理器:将容器内的空间分为东、西、南、北、中5个区域,分别用EAST、WEST、SOUTH、NORTH、CENTER表示。

Swing常用组件有JLabel标签、JTextField文本、JPasswordField密码、JButton按钮、JPanel面板、JComboBox选择框、JRadioButton单选按钮、JCheckBox复选框。

使用JRadioButton组件,首先需要创建ButtonGroup对象,然后将创建的JRadioButton组件对象,添加至ButtonGroup对象中。

Java面向对象笔记 • 【第10章 Swing编程初级应用】相关推荐

  1. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  2. Java面向对象笔记 • 【第3章 继承与多态】

    3.1.1 自定义包 如果在程序中没有声明包,类将被存放在default的包中,该方式不被提倡. 语法: package 包名 包命名规范: 包的命名规范应当体现出项目资源良好的划分 自定义标签类所在 ...

  3. 第十二章 Swing编程

    本章要点 Swing编程基础 Swing组件的继承层次 常用Swing组件的用法 使用JToolBar创建工具条 颜色选择对话框和文件浏览对话框 Swing提供的特殊容器 Swing的简化拖放操作 使 ...

  4. Java面向对象(下)课后习题编程题

    教材Java面向对象程序设计(第二版) 袁绍欣 第六章第12题 题目 借助JDK帮助,编写程序实现这样的功能:Applet当中的 TextField,每次输入任一字符,在一个label当中都能动态跟踪 ...

  5. Linux(b站视频兄弟连)自学笔记第十一章——shell编程

    Linux(b站视频兄弟连)自学笔记第十一章--shell基础 正则表达式 字符截取命令 cut命令 printf命令 awk命令 sed命令 字符处理命令 判断条件 流程控制 if语句 case语句 ...

  6. java学习笔记-第七章:面向对象编程(基础部分)

    第七章:面向对象编程(基础部分) 总体内容 类与对象 引出类与对象 类与对象概述 类与对象的关系示意图 属性概念及其细节 类与对象快速入门案例 对象内存布局 类与对象内存分配机制 引申:java内存的 ...

  7. Java面向对象笔记 • 【第11章 Swing高级应用】

    全部章节   >>>> 本章目录 11.1 JTable表格组件 11.1.1 JTable表格组件 11.1.2 实践练习 11.2 菜单组件 11.2.1 菜单组件 11. ...

  8. Java面向对象笔记:【第一章 面向对象】

    1.1 类和对象 类和对象是面向对象编程最重要.最核心的两个基本概念 类是对一类事物描述,是抽象的.概念上的定义 对象是实际存在的该类事物的每个个体,因而也称实例(instance) 1.1.1 类和 ...

  9. Java面向对象程序设计综合练习2(编程题)

    R7-1 学生类-构造函数 定义一个有关学生的Student类,内含类成员变量: String name.String sex.int age,所有的变量必须为私有(private). 1.编写有参构 ...

最新文章

  1. php和python对比-python与java、php、go的优势对比
  2. 解决EXECL单元格不可以填充颜色
  3. 【Python基础】Python中必须知道的5对魔术方法
  4. GDCM:Traverse Modules的测试程序
  5. 常用正则表达式大全——包括校验数字、字符、一些特殊的需求
  6. vb.net中递归退到最外层_数组中的逆序对
  7. mysql 增量备份_MySQL增量备份与恢复(增量备份概述、特点,断点恢复实操)
  8. Matlab输出换行
  9. Python上传文件到百度网盘(一)
  10. soundpool android,android – 如何获取Soundpool的持续时间
  11. Google广告分类体系
  12. REST Assured 4 - 第一个GET Request
  13. 腾讯企业邮箱 java_java发送腾讯企业邮件-可用于发送邮箱验证码
  14. 基于JAVA实现的图形化页面置换算法
  15. 祝贺!周润发获颁授荣誉博士
  16. 服务器简介(一):服务器定义、服务器特点、服务器分类、服务器软件
  17. 酒店、宾馆、饭店的区别
  18. python需要购买版权吗_关于版权事宜的一些说明
  19. mysql proxy mycat_mysql数据库代理MyCAT搭建
  20. 【Python】爬取金庸射雕英雄传连载版以及金庸作品里所有江湖门派

热门文章

  1. 基带0day漏洞可攻击数百万部华为手机
  2. VBA-EXCEL:控制WORD指定位置,插入图片并调整在大小,高低,环绕
  3. 世界上最震撼的屏幕保护程序
  4. openstack nova基础知识——libvirt和qemu(2)
  5. 学习笔记-Web Generic
  6. 简单演示程序序列号的破解
  7. 基于Citespace和vosviewer文献计量学可视化SCI论文高效写作方法
  8. “京东区块链技术白皮书”解密互联网应用(附下载链接)
  9. 华创期货:期货交易技巧让亏损远离
  10. win10系统上安装awvs漏洞扫描器