java基础day05---界面

1、GUI:图形用户界面(Graphics User Interface)

开发工具包AWT抽象窗口把工具箱=》swing 解决了awt存在的lcd问题=》SWT swing比较耗内存===》JFace更易用、功能强大的图形包

2、组件

窗口组件:JFrame Frame的子类,属于容器类组件,顶层容器

按钮组件:JButton AbstractButton的子类,容器类组件,可加入到别的组件,swing包的按钮组件有:单选按钮(JRadioButton)、箭头按钮(BasicArrowButton)、触发器按钮(JToggleButton)...

3、布局管理器

布局管理器:组件在容器中的位置和大小由布局管理器决定,所有容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。

种类:边界布局管理器(BorderLayout)、流式布局管理器(FlowLayout)、网络布局管理器(GridLayout)、卡片布局管理器(CardLayout)、网络报布局管理器(GridBagLayout)

步骤:

1.继承JFrame

2.定义需要的组件

3.创建组件(构造函数)

4.添加组件

5.设置窗体属性

6.显示窗体

3个常用布局管理器

1.BorderLayout

注意:

1.不是5个部分都必须添加

2.中间组件会自动调节大小

3.JFrame、JDialog默认布局管理器是BorderLayout

/*
作者:mys
功能:BorderLayout
日期:2018/7/16
*/
package cn.mys;
import java.awt.*;
import javax.swing.*; public class Demo24_1 extends JFrame {
//定义组件
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String []args){
Demo24_1 Demo24_1=new Demo24_1();
}
//构造函数
public Demo24_1(){
//创建组件
jb1=new JButton("中部");
jb2=new JButton("北部");
jb3=new JButton("南部");
jb4=new JButton("西部");
jb5=new JButton("东部"); //添加组件
this.add(jb1,BorderLayout.CENTER);
this.add(jb2,BorderLayout.NORTH);
this.add(jb3,BorderLayout.SOUTH);
this.add(jb4,BorderLayout.WEST );
this.add(jb5,BorderLayout.EAST); //设置窗体属性
this.setTitle("BorderLayout");//设置窗体标题
this.setSize(300,300);//设置窗体大小
this.setLocation(200,200);//设置初始化位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置当关闭窗口时,保证JVM退出 //显示窗体
this.setVisible(true);
}
}

2.FlowLayout

注意:

1.不限制其所管理的组件大小

2.当容器被缩放时,组件的位置肯发生变化,但组件的大小不变

3.默认组件是居中对齐,可指定其对齐方式

//设置流式布局管理器,并设置对其模式
this.setLayout(new FlowLayout(FlowLayout.LEFT));

2.GridLayout

注意:

1.组件的相对位置不随容器的缩放而变化,但大小会变化

2.所有的组件大小相同

3.可设置网格行列以及间隙

//设置布局管理器,row3行 rol3列 hgap左右间距10 vgap上下间距10
this.setLayout(new GridLayout(3,3,10,10));

4、面板组件JPanel

注意:

1.JPanel面板组件,非顶层容器,可加入别的组件

2.一个界面只能有一个JFrame组件,但可有多个JPanel组件

3.JPanel是JCmponent的子类

4.默认布局管理器是FlowLayout

package cn.mys;
import java.awt.*;
import javax.swing.*; public class Demo24_4 extends JFrame{
//添加组件
JPanel jp1,jp2;
JButton jb1,jb2,jb3,jb4,jb5,jb6;
public static void main(String []args){
Demo24_4 demo24_4=new Demo24_4();
}
//构造函数
public Demo24_4(){
//创建组件
jp1=new JPanel();//默认FlowLayout
jp2=new JPanel(); jb1=new JButton("苹果");
jb2=new JButton("西瓜");
jb3=new JButton("葡萄");
jb4=new JButton("橘子");
jb5=new JButton("香蕉");
jb6=new JButton("荔枝"); jp1.add(jb1);
jp1.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5); //设置布局管理器
//默认布局管理器是FlowLayout //添加组件,注意设置边界方向
this.add(jp1,BorderLayout.NORTH);
this.add(jb6,BorderLayout.CENTER);
this.add(jp2,BorderLayout.SOUTH); //设置窗口属性
this.setSize(300,200);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示窗口
this.setVisible(true);
}
}



5、文本框JTextField、密码框JPasswordField、标签JLable

//部分代码
public class Demo24_5 extends JFrame{
JPanel jp1,jp2,jp3;
JButton jb1,jb2;
JTextField jtf;//文本框
JPasswordField jpf;//密码框
JLabel jl1,jl2;//标签
public static void main(String []args){
Demo24_5 demo24_5=new Demo24_5();
} public Demo24_5(){
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel(); jb1=new JButton("确认");
jb2=new JButton("取消"); jtf=new JTextField(10);
jpf=new JPasswordField(10);
jl1=new JLabel("管理员");
jl2=new JLabel("密 码");
//网络布局管理器
this.setLayout(new GridLayout(3,1)); jp1.add(jl1);
jp1.add(jtf); jp2.add(jl2);
jp2.add(jpf); jp3.add(jb1);
jp3.add(jb2);
}
}



6、单选框JRadioButton、复选框JCheckBox

注意:同一组单选框必须先创建ButtonGroup

//部分代码
public class Demo24_6 extends JFrame{
JPanel jp1,jp2,jp3;
JButton jb1,jb2;
JLabel jl1,jl2;
JCheckBox jcb1,jcb2,jcb3;//复选框
JRadioButton jrb1,jrb2;//单选框
ButtonGroup bg;
public static void main(String []args){
Demo24_6 demo24_6=new Demo24_6();
} public Demo24_6(){
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel(); jb1=new JButton("注册用户");
jb2=new JButton("取消注册"); jl1=new JLabel("你最喜欢的运动");
jl2=new JLabel("你的性别"); jcb1=new JCheckBox("足球");
jcb2=new JCheckBox("篮球");
jcb3=new JCheckBox("网球"); jrb1=new JRadioButton("男");
jrb2=new JRadioButton("女");
//同一组单选框必须先创建ButtonGroup
bg=new ButtonGroup();
bg.add(jrb1);
bg.add(jrb2); this.setLayout(new GridLayout(3,1)); jp1.add(jl1);
jp1.add(jcb1);
jp1.add(jcb2);
jp1.add(jcb3); jp2.add(jl2);
jp2.add(jrb1);
jp2.add(jrb2); jp3.add(jb1);
jp3.add(jb2);
}
}



7、下拉框JComboBox、列表框组件JList+滚动窗格组件JScrollPane

public class Demo24_7 extends JFrame{
JPanel jp1,jp2;
JLabel jlb1,jlb2;
JComboBox jcb1;//下拉框
JList jlist;//列表框组件
JScrollPane jsp1;//滚动窗格组件
public static void main(String []args) {
Demo24_7 demo24_7 = new Demo24_7();
}
public Demo24_7(){
jp1=new JPanel();
jp2=new JPanel(); jlb1=new JLabel("您的籍贯是");
jlb2=new JLabel("您喜欢去旅游的地区"); String []jg={"云南","西藏","四川","重庆"};
jcb1=new JComboBox(jg);//下拉框 String []jl={"北京","上海","深圳","四川","重庆"};
jlist=new JList(jl);//列表框组件
jlist.setVisibleRowCount(3);//设置希望显示多少个选项
jsp1=new JScrollPane(jlist);//滚动窗格组件 this.setLayout(new GridLayout(3,1)); jp1.add(jlb1);
jp1.add(jcb1); jp2.add(jlb2);
jp2.add(jsp1);//滚动窗格组件
}
}



8、JSplitPane拆分窗格

public class Demo24_8 extends JFrame{
//定义组件
JLabel jlb;
JList jList;//列表框组件
JSplitPane jsp;//拆分窗格
public static void main(String []args){
Demo24_8 demo24_8=new Demo24_8();
}
public Demo24_8() {
//创建组件
String[] words = {"boy", "girl", "people"};
jList = new JList(words); jlb = new JLabel(new ImageIcon("images/timg.gif"));
jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jList, jlb);//拆分窗口 //可以变化
jsp.setOneTouchExpandable(true); //设置布局管理器(默认BorderLayout) //添加组件
this.add(jsp);
}
}



9、JTextArea多行文本框组件

public class Demo24_9 extends JFrame{
JPanel jp1;
JTextArea jta;//多行文本框
JScrollPane jsp;//滚动
JComboBox jcb;//下拉框
JTextField jtf;//文本框
JButton jb;//按钮
public static void main(String []args){
Demo24_9 demo24_9=new Demo24_9();
}
public Demo24_9(){
jp1=new JPanel();
jta=new JTextArea();
jsp=new JScrollPane(jta);//滚动
String []name={"mys","sky"};
jcb=new JComboBox(name);
jtf=new JTextField(10);
jb=new JButton("发送"); jp1.add(jcb);
jp1.add(jtf);
jp1.add(jb); this.add(jsp);
this.add(jp1,BorderLayout.SOUTH); this.setSize(300,200);
//添加图标
this.setIconImage((new ImageIcon("images/qq.jpg").getImage()));
this.setTitle("腾讯qq");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}

10、JTabbedPane 选项卡窗格

/*
作者:mys
功能:qq登陆界面 JTabbedPane 选项卡窗格
日期:2018/7/19
*/
package cn.mys;
import java.awt.*;
import javax.swing.*; public class Demo24_10 extends JFrame{
//北部
JLabel jl1; //南部
JPanel jp1;
JButton jb1,jb2,jb3; //中部
JTabbedPane jtp;//选项卡窗格
JPanel jp2,jp3,jp4; JLabel jl2,jl3,jl4,jl5;
JTextField jtf;
JPasswordField jpf;
JButton jb4;
JCheckBox jcb1,jcb2; public static void main(String []args){
Demo24_10 demo24_10=new Demo24_10();
}
public Demo24_10(){
//北部
jl1=new JLabel(new ImageIcon("images/TIM.png")); //南部
jp1=new JPanel();
jb1=new JButton("登录");
jb2=new JButton("取消");
jb3=new JButton("注册向导"); //中部
jtp=new JTabbedPane();//选项卡窗格
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel(); //将面板添加到选项卡
jtp.add("QQ号码",jp2);
jtp.add("手机号码",jp3);
jp3.setBackground(Color.CYAN);
jtp.add("电子邮箱",jp4);
jp4.setBackground(Color.pink); jl2=new JLabel("QQ号码");
jl3=new JLabel("QQ密码");
jl4=new JLabel("忘记密码");
jl4.setFont(new Font("微软雅黑",Font.PLAIN,16));//设置字体样式
jl4.setForeground(Color.BLUE);//设置字体颜色
jl5=new JLabel("<html><a href='www.qq.com'>申请密码保护</a>");
jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); jtf=new JTextField(10);
jpf=new JPasswordField(10);
jb4=new JButton("清除号码");
jcb1=new JCheckBox("隐身登陆");
jcb2=new JCheckBox("记住密码"); //注意:设置jp2布局管理器
jp2.setLayout(new GridLayout(3,3)); jp1.add(jb1);
jp1.add(jb2);
jp1.add(jb3); jp2.add(jl2);
jp2.add(jtf);
jp2.add(jb4); jp2.add(jl3);
jp2.add(jpf);
jp2.add(jl4); jp2.add(jcb1);
jp2.add(jcb2);
jp2.add(jl5); this.add(jl1,BorderLayout.NORTH);
this.add(jtp,BorderLayout.CENTER);
this.add(jp1,BorderLayout.SOUTH); this.setSize(420,360);
this.setIconImage(new ImageIcon("images/tim1 .png").getImage());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}

java基础day05---界面的更多相关文章

  1. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  2. Java基础笔记05-06-07-08

    五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...

  3. 微冷的雨Java基础学习手记(一)

    使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要 ...

  4. JAVA基础篇NO1--环境变量的配置及命名规则

    标签(空格分隔): java基础 一:计算机概述 计算机:硬件和软件 硬件:控制器 运算器 存储器 输入和输出设备       存储器:外存(硬盘) 内存 软件:系统软件 应用软件   系统软件:wi ...

  5. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  6. [Java面试二]Java基础知识精华部分.

    一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...

  7. Java基础知识学习(九)

    GUI开发 先前用Java编写GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).现在多用Swing.Swing可以看作是AWT的改良版,而不是代替AWT,是对A ...

  8. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  9. Java基础 —— 概述

    Java语言: JDK(Java Development Kit)开发工具包,提供Java的开发环境和运行环境 --> 适合于开发 JRE(Java Runtime Environment)Ja ...

  10. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

随机推荐

  1. Selenium2学习(九)-- 多窗口,句柄(handle)

    前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗 ...

  2. vue-cli项目接口地址可配置化(多环境部署)一处修改多处适用

    本文档目的在于帮助对vue了解比较少的同学,能够快速配置vue应用中的接口地址.方便项目切换服务环境后,重新修改多组件的http请求地址. 一.前言 我们在上一篇文章分享了vue-cli项目基本搭建( ...

  3. tensorflow 模型不兼容

    [ERROR] [1533570199.196157]: bad callback: <bound method TLDetector.image_cb of <__main__.TLDe ...

  4. 一点一点学写Makefile(6)-遍历当前目录源文件及其子目录下源文件

    时候,我们在开发的时候需要将本次工程的代码分成多个子目录来编写,但是在Makefile的编写上却是个问题,下面我就教大家怎么构建带有子文件夹的源代码目录的自动扫描编译 下面这张图是我的文件树 这里面s ...

  5. 人多qiu是好

    小组第一次冲刺 团队任务描述: 在确定完分组,并对于敏捷开发做了相应的了解之后,我们团队开始了第一次的冲刺.对于我们团队的第一次的Scrum冲刺,我们团队开展了团队会议.首先,我们明确了我们的目标,对 ...

  6. Android(java)学习笔记31:泛型高级之通配符

    1. 泛型高级之通配符: package cn.itcast_07; import java.util.ArrayList; import java.util.Collection; /* * 泛型高 ...

  7. javap(反汇编命令)

    用法: javap <options> <classes> 其中, 可能的选项包括: -help  --help  -?        输出此用法消息 -version     ...

  8. 【luogu P3374 树状数组1】 模板

    题目链接:https://www.luogu.org/problemnew/show/P3374 留个坑,以后补上BIT的讲解,先留下板子复习用 #include<iostream> #i ...

  9. AngularJS 二 指令介绍

    初始化AngularJS框架 ng-app指令: 在NG-程序指令是AngularJS应用程序的起点.它自动初始化AngularJS框架.AngularJS框架将在加载整个文档之后首先检查HTML文档 ...

  10. kinect v2

    http://www.tuicool.com/articles/NbmyyeU https://channel9.msdn.com/Blogs/raw-tech/Making-your-body-th ...