java基础day05---界面
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---界面的更多相关文章
- 黑马程序员:Java基础总结----GUI图形化界面
黑马程序员:Java基础总结 GUI图形化界面 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! GUI(Graphical User Interface)图形化界 ...
- Java基础笔记05-06-07-08
五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...
- 微冷的雨Java基础学习手记(一)
使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要 ...
- JAVA基础篇NO1--环境变量的配置及命名规则
标签(空格分隔): java基础 一:计算机概述 计算机:硬件和软件 硬件:控制器 运算器 存储器 输入和输出设备 存储器:外存(硬盘) 内存 软件:系统软件 应用软件 系统软件:wi ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- [Java面试二]Java基础知识精华部分.
一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...
- Java基础知识学习(九)
GUI开发 先前用Java编写GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).现在多用Swing.Swing可以看作是AWT的改良版,而不是代替AWT,是对A ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java基础 —— 概述
Java语言: JDK(Java Development Kit)开发工具包,提供Java的开发环境和运行环境 --> 适合于开发 JRE(Java Runtime Environment)Ja ...
- 转:二十七、Java图形化界面设计——容器(JFrame)
转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...
随机推荐
- js的作用域与作用域链
JavaScript的作用域和作用域链.在初学JavaScript时,觉得它就和其他语言没啥区别,尤其是作用域这块,想当然的以为“全局变量就是在整个程序的任何地方都可以访问,也就是写在函数外的变量,局 ...
- 小于12px的字体大小在Chrome中不起作用
今天遇见一个小问题,让人挺郁闷的,在Chrome浏览器中无法把字体变成12px以下.网上搜索以下,发现无论中文英文数字在网页中CSS设置小于12px后各大浏览器均支持,在谷歌chrome浏览器不支持解 ...
- March 4 2017 Week 10 Saturday
There is more to life than increasing its speed. 生活不仅仅是匆匆赶路. I always think I have walked very slowl ...
- 如何在SAP CRM里创建和消费Web service
Created by Wang, Jerry, last modified on Dec 19, 2014 The following steps demonstrates how to expose ...
- 为什么使用中间件下载时总是收到警告消息Object is in status Wait
在使用中间件从ERP下载对象时,正常情况下应该看到如下提示消息: 然而有时遇到的是黄色的警告消息:Object is in status Wait. 如何自己排错呢?在函数SMOF0_INIT_DNL ...
- python 整形方法
1. int() a = ' print(type(a), a) b = int(a) print(type(b), b) # 输出 <class 'str'> 123 <class ...
- 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 ...
- 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 = ...
- 【转】 ios的手势操作之UIGestureRecognizer浅析
一.概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式: - (void)touchesBegan:(NSSet *)touches withE ...
- 2018.12.21 如何在现有的Eclipse(4.9.0版本)中安装STS (Spring Tool Suite ) Mac环境下
在Eclipse中安装STS正确步骤实现方式 1.简介说明 spring Tool Suite(sts)就是一个基于Eclipse的开发环境, 用于开发Spring应用程序.它提供了一个现 ...