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. js的作用域与作用域链

    JavaScript的作用域和作用域链.在初学JavaScript时,觉得它就和其他语言没啥区别,尤其是作用域这块,想当然的以为“全局变量就是在整个程序的任何地方都可以访问,也就是写在函数外的变量,局 ...

  2. 小于12px的字体大小在Chrome中不起作用

    今天遇见一个小问题,让人挺郁闷的,在Chrome浏览器中无法把字体变成12px以下.网上搜索以下,发现无论中文英文数字在网页中CSS设置小于12px后各大浏览器均支持,在谷歌chrome浏览器不支持解 ...

  3. March 4 2017 Week 10 Saturday

    There is more to life than increasing its speed. 生活不仅仅是匆匆赶路. I always think I have walked very slowl ...

  4. 如何在SAP CRM里创建和消费Web service

    Created by Wang, Jerry, last modified on Dec 19, 2014 The following steps demonstrates how to expose ...

  5. 为什么使用中间件下载时总是收到警告消息Object is in status Wait

    在使用中间件从ERP下载对象时,正常情况下应该看到如下提示消息: 然而有时遇到的是黄色的警告消息:Object is in status Wait. 如何自己排错呢?在函数SMOF0_INIT_DNL ...

  6. python 整形方法

    1. int() a = ' print(type(a), a) b = int(a) print(type(b), b) # 输出 <class 'str'> 123 <class ...

  7. Codeforces Round #375 (Div. 2) D. Lakes in Berland (DFS或并查集)

    D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. lua 语句学习

    就如同C里的if else,while,do,repeat.就看lua里怎么用: 1.首先看if else t = {1,2,3} local i = 1 if t[i] and t[i] % 2 = ...

  9. 【转】 ios的手势操作之UIGestureRecognizer浅析

    一.概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式: - (void)touchesBegan:(NSSet *)touches withE ...

  10. 2018.12.21 如何在现有的Eclipse(4.9.0版本)中安装STS (Spring Tool Suite ) Mac环境下

    在Eclipse中安装STS正确步骤实现方式 1.简介说明       spring Tool Suite(sts)就是一个基于Eclipse的开发环境, 用于开发Spring应用程序.它提供了一个现 ...