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学习(八)-- 操作元素(键盘和鼠标事件)

    前言 在前面的几篇中重点介绍了一些元素的到位方法,到位到元素后,接下来就是需要操作元素了.本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件 有些web界面的选项菜单需要鼠标悬停在某个元素 ...

  2. Ubuntu 14.04默认以字符界面启动

    在windows上跑虚拟机比较资源,特别当以图形界面启动时,如果宿主机性能不好,就相当卡. 让Ubuntu 14.04默认以字符界面启动的方法: 编辑文件:etc/default/grub 将  GR ...

  3. 了解git /github

    一 GIT是什么? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git ...

  4. 设计模式——抽象工厂模式(AbstractFactoryPattern)

    抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML图: IFactory: package com.cnblog.clarck ...

  5. SQL SERVER 2012断日志

    有一个SQL2012库的日志达到了100G左右,平时开发人员根本没有做过事务日志备份,而磁盘空间已经快满了.所以,只能截断它.但是,由于从2K8以后,SQL SERVER好像不再提供 truncate ...

  6. MySQL:数据库入门篇3

    1.sql语句逻辑执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_t ...

  7. kiwi installation

    Mainly the installstion methods follow the url: https://github.com/emolch/kiwi/wiki/Installation the ...

  8. [19/03/18-星期一] 常用类_Math(数学)类&Rondom(随机数)类

    一.Math(数学)类(单独一个Java.Math 包中) java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型.如果需要更加强大的数学运算能力, ...

  9. P3909 异或之积

    P3909 异或之积 为什么叫做异或之积? 答曰:只要不关乎Alice和Bob就行 做完这道水题,感觉自己弱爆了. 一开始就要考虑暴力\(O(n^3)\)的优化. 然后就注意到了题目中的\(6\)为什 ...

  10. Java to Kotlin (1) - 就决定是你了

    2017年,Kotlin的发展可谓十分迅猛,稍微关注it界的人都知道谷歌宣布kotlin成为安卓的一级语言,不过那时候我并没有关注,因为我不是搞安卓的... 哈哈开个玩笑,其实之前也有听说过这个语言的 ...