软件的交互方式:

1. 控制台的交互方式、

2. 图形化界面的交互方式 。

java使用到的图形类主要在java.awt 与javax.swing包中。

java.awt 与 javax.swing包的区别:

java.awt中使用的图形类都是依赖于系统 的图形库的。

javax.swing包使用到的图形类都是sun自己实现,不需要依赖系统的图形库。

疑问: 既然swing包中的图形类已经取代awt包的图形类,为什么不删除awt呢?

1、swing比awt包出现的晚,所以会存在一些界面是用了awt包的相关类和方法,删除会带来影响。

2、awt包中不仅含有图像类,还有其它的类和方法。二者仅仅是在图形类上有很高的相似度,而其它则并不是这样。

在java中所有的图形类都被称作组件类。

组件的类别:

----------| 容器组件

----------| 非容器组件

public classDemo1 {public static voidmain(String[] args) {

JFrame frame= new JFrame("这个是我第一个图形化界面的例子");//设置窗体的大小//frame.setSize(300,400);//设置窗体(左上角)出现的位置//frame.setBounds((1366-300)/2, (768-400)/2, 300,400);//第一个参数是左上角的x轴坐标, 第二参数是左上角y的坐标。 第三个窗体宽, 第四窗体的高。

initFrame(frame, 300,400);

frame.setVisible(true); //setVisible 设置窗体的可见性。//设置窗体关闭事件

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}//获取屏幕的分辨率 设置窗体在屏幕的居中位置。

public static void initFrame(JFrame frame,int width , intheight){

Toolkit toolkit= Toolkit.getDefaultToolkit(); //获取一个与系统相关工具类对象//获取屏幕的分辨率

Dimension d =toolkit.getScreenSize();int x = (int) d.getWidth();int y = (int) d.getHeight();

frame.setBounds((x-width)/2, (y-height)/2, width, height);

}

}

JOptionPane(对话框)

消息对话框

警告对话框

错误对话框

输入对话框

确认对话框

此处用上班迟到扣钱为例

import javax.swing.JFrame;

import javax.swing.JOptionPane;public classDemo02 {public static voidmain(String[] args) {

JFrame frame=new JFrame("窗体");

Demo01.initJframe(frame,400, 500);

JOptionPane.showMessageDialog(frame,"明天停电,不用上班", "通知", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(frame,"上班迟到2次,迟到次数用完了。","警告",JOptionPane.WARNING_MESSAGE);

JOptionPane.showMessageDialog(frame,"迟到3次了,罚50元","处分", JOptionPane.ERROR_MESSAGE);

JOptionPane.showInputDialog("请输入你要给我的金额($)");

JOptionPane.showConfirmDialog(frame,"你确认要交吗?");

}

}

效果展示:

文件对话框(FileDialog):

FileDialog(Dialog parent, String title, int mode)

parent: 对话框的所有者

tiltle : 对话框的标题

mode: load(打开) 、 save(保存)

public classDemo3 {public static voidmain(String[] args) {

JFrame frame= new JFrame("窗体");//创建一个文件对话框(初始也是不可见)//FileDialog fileDialog = new FileDialog(frame, "请选择打开的文件", FileDialog.LOAD);

FileDialog fileDialog = new FileDialog(frame,"请选择保存的路径",FileDialog.SAVE);

FrameUtil.initFrame(frame,300,400);

fileDialog.setVisible(true);

System.out.println("文件所在的目录:"+fileDialog.getDirectory());

System.out.println("文件名:"+fileDialog.getFile());

}

}

布局管理器:布局管理就是用于指定组件的 摆放位置的。

每种布局管理器都有自己的摆放风格

BorderLayout(边框布局管理器)

摆放的风格: 上北 、 下南 、 左西、 右东 , 中

Borderlayout 要注意的事项:

1. 使用Borderlayout添加组件的时候,如果没有指定组件的方位,那么默认添加到中间的位置上。

2. 使用BorderLayout的时候,如果东南西北那个方向没有对应 的组件,那么中间位置的组件就会占据其空缺的位置。

3. 窗体默认的布局管理器就是Borderlayout.

public classDemo1 {public static voidmain(String[] args) {

JFrame frame= new JFrame("边框局部管理器");//创建一个边框布局管理器

BorderLayout borderLayout = newBorderLayout();//让borderlayout管理frame窗体。

frame.setLayout(borderLayout);

frame.add(new JButton("北"),BorderLayout.NORTH);

frame.add(new JButton("南"),BorderLayout.SOUTH);

frame.add(new JButton("西"),BorderLayout.WEST);

frame.add(new JButton("东"),BorderLayout.EAST);

frame.add(new JButton("中"),BorderLayout.CENTER);//初始化窗体

FrameUtil.initFrame(frame, 300, 300);

}

}

流式布局管理器(FlowLayout)

流式布局管理器要注意的事项:

1. 流式布局管理器默认情况是居中对齐的。

2. panel默认的局部管理器就是FlowLayout.

import java.awt.FlowLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;public classDemo04 {public static voidmain(String[] args) {

JFrame frame= new JFrame("窗体");//创建面板

JPanel panel = newJPanel();

frame.add(panel);//创建一个流式布局管理器

FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT, 0, 30);//FlowLayout.LEFT 指定对齐的方式。//让流式布局管理器管理frame窗体

panel.setLayout(flowLayout);

panel.add(new JButton("按钮1"));

panel.add(new JButton("按钮2"));

panel.add(new JButton("按钮3"));

panel.add(new JButton("按钮4"));//初始化窗体

Demo01.initJframe(frame,300, 400);

}

}

表格布局管理器(GridLayout)

注意的事项: 如果表格数量不够使用时,默认会多加一列。

import java.awt.GridLayout;

import javax.swing.JButton;

import javax.swing.JFrame;public classDemo04 {public static voidmain(String[] args) {

JFrame frame= new JFrame("计算器");//创建表格布局管理器

GridLayout gridLayout = new GridLayout(4, 4, 1, 2);//让窗体交给表格布局管理器管理

frame.setLayout(gridLayout);for(int i = 0 ; i<10; i++){

frame.add(new JButton(i+""));

}

frame.add(new JButton("+"));

frame.add(new JButton("-"));

frame.add(new JButton("*"));

frame.add(new JButton("/"));

frame.add(new JButton("="));

frame.add(new JButton("."));

Demo01.initJframe(frame,300, 400);

}

}

java 图类_java笔记之图形类详解相关推荐

  1. java observer模式_Java观察者模式(Observer)详解及应用

    Java观察者模式(Observer)详解及应用 (2011-12-15 14:03:30) 标签: 杂谈 Java观察者模式(Observer)详解及应用 由于网站带有弱sns功能,因此需要设计关注 ...

  2. java transient 关键字_java中的transient关键字详解

    前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...

  3. java闭合数据_java多线程中线程封闭详解

    线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...

  4. java lombok 视频_Java开发神器Lombok使用详解

    最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...

  5. java静态多态_Java静态方法不具有多态性详解

    动态绑定机制使得基类的引用能够指向正确的子类对象,从而使得面向基类编程成为可能. 然而动态绑定在以下两种情况会失效. 1.基类方法是private或final修饰的 这个很好理解,因为private说 ...

  6. java多线程教程_java 基础教程之多线程详解及简单实例

    java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...

  7. java局部内部类_Java 局部内部类、匿名内部类详解

    外部类与内部类 众所周知,每个java文件必须有一个与这个java文件同名的外部类,这个外部类可以是public或default的.而除了这个同名外部类,还可以有与这个同名外部类平级的其他外部类,但它 ...

  8. java 静态导入_JAVA静态导入(import static)详解

    在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的.这种新的特性成为静态导入. 当你想使用static成员时,可以使 用静态导入 ...

  9. java callable接口_Java Callable接口实现细节详解

    代码如下 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import ja ...

最新文章

  1. 隐马尔科夫模型(HMM)解释 和 前向与后向算法[转] 讲解通俗易懂 赞
  2. java 在线答疑系统_基于java 在线答疑系统-需求分析与概念原型
  3. 为什么 IEnumerable 没有提供 ForEach ?
  4. mysql page directory_【innodb】page directory的二分查找问题
  5. 图像模式识别与计算机视觉的,图像处理、计算机视觉和模式识别领域有哪些区别和联系...
  6. 微信小程序 服务通知
  7. 数据结构算法——1097. Hub Connection plan
  8. 小程序云开发实现上传图片功能
  9. windows服务器虚拟桌面,基于windows server 2012 的微软桌面虚拟化实战教程
  10. 多频子量子计算机,量子计算机研究:纠错和容错计算
  11. 微信公众号客服系统可以实现自动回复吗?
  12. 彻底搞懂CNN中的卷积和反卷积
  13. 一篇文章,只用看三遍,终生不忘网络分层
  14. 几何光学学习笔记(26)-6.1光通量
  15. 阿里二面:RocketMQ 消费失败了,怎么处理?
  16. 触摸控件与显示控件介绍
  17. 【Python】Decision on buying cars COROLLA or LEVIN(数据分析技术实现过程之·2 data_analysis①)
  18. openldap简介
  19. 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
  20. CPLD个人学习笔记

热门文章

  1. 华为防火墙-1-安全区域
  2. TeamViewer远程的三种访问模式 (最方便的模式无需输入密码)
  3. 美国教育骗局:高中生活,4小时睡眠,4杯咖啡,4.0的成绩
  4. Android 读取扫码枪的内容,可以读取条形码 ,二维码
  5. sony计算机不能连无线网络,sony电视以连接wifi但是用不了网络
  6. Error creating bean with name ‘BAdminMapper‘ defined in file [C:\Users\ASUS\Desktop\FleakMarket-mast
  7. 新闻与传播c刊_新闻专业有什么核心期刊
  8. GO 发送邮件,官方连包都帮我们写好了
  9. 为 27岁的自己立下一个flag
  10. PAT甲级 1071 说话方式