⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java09.txt

📁 达内IT培训Core Java全部笔记 是学习Java编程的好东西
💻 TXT
📖 第 1 页 / 共 2 页
字号:
		}		this.age = age;	}		public static void main(String[] args) throws AgeException{			Person p = new Person();			p.setAge(151);			System.out.println(p.getAge());	}}输出结果:Exception in thread "main" com.tarena.day09.exception.AgeException: AgeError	at com.tarena.day09.exception.Person.setAge(Person.java:12)	at com.tarena.day09.exception.Person.main(Person.java:19)-----------------------------------------------------------------------------------------断言(Assert):需要用java -ea 包名.类名  来使用:Eclipse中在源代码框右键Run as,在Run中的Arguments下的VM Arguments中加入 -ea-----------------------------------------------------------------------------------------package com.tarena.day09.exception;public class TestAssert {	public static void main(String[] args) {		int i = 0;		assert i == 1 : "err";		//java -ea 包名.类名  来使用		//如果不满足条件会抛出一个错误并中断程序				System.out.println("main");	}}输出结果:Exception in thread "main" java.lang.AssertionError: err	at com.tarena.day09.exception.TestAssert.main(TestAssert.java:7)-----------------------------------------------------------------------------------------因为 try/catch 的效率不高,所以尽量用判断语句来避免RuntimeException1.算术异常 if(除数!=0)2.空指针 if(p!=null);3.数组 if<a[].length4.类型转换(obj.getClass())5.数字格式异常可以用正则避免-----------------------------------------------------------------------------------------package com.tarena.day09.exception;public class TestRE {	public static void main(String[] args) {		//算术异常		int b = 0;		int a = 2;		if(b!=0){			a = a/b;		}				//空指针异常		String s = null;		if(s!=null)				s.indexOf(3);				//数组下标越界异常		String[] ss = new String[5];		int index = 5;		if(index < ss.length){			ss[index] = "";		}				//数字格式异常		String str = "24a";		if(str.matches("^[0-9]+$"))			Integer.parseInt(str);				//类型转换异常		Object o = new String();		if (o instanceof String) {			str = (String)o;					}	}}-----------------------------------------------------------------------------------------图形用户界面(GUI):1.计算器2.记事本3.文件分割4.聊天软件5.多线程下载AWT与SwingAWT 不能100%跨平台,依赖OS,而且软件厂商都不愿意支持,功能很有限	   但速度稍快,直接支持Applet(网页中的小插件),外观更贴近操作系统(OS)Swing 100%纯Java的,可以跨平台,轻量级组件,对资源消耗很小,开发功能更强,风格统一,更多厂商支持		缺点是不能直接支持Applet,需要装插件,比AWT要慢一点,稍占内存,某些平台美观度稍差创建GUI:1.选组件,选容器2.选布局3.加组件,入容器4.事件处理(完整按钮的功能)-----------------------------------------------------------------------------------------package com.tarena.day09.gui;import javax.swing.JFrame;import javax.swing.JButton;public class FirstFrame {	public static void main(String[] args) {		JFrame jf = new JFrame("First Frame");		JButton jb = new JButton("click");		jf.add(jb);			//加入按钮		jf.setSize(300,200);	//设置窗口大小		jf.setVisible(true);	//设置窗口可见		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//设置关闭,不设置关闭JVM没有退出			}}-----------------------------------------------------------------------------------------容器:JFrame就是通常意义上的窗口(必须有,后面两个可选)JDialog对话框,依赖于JFrameJPanel面板不能独立存在,必须放入一个JFrame或JDialog当中setLocation() 设置窗口出现位置setSize() 设置大小setBound() 设置边框一个容器只能有一个布局管理器,常用布局来自java.awt.* 包flowLayout:	保持组件的原始大小	像word一样,放入组件时是从左向右,从上到下排列的,水平方向允许靠左靠右或居中对齐(默认居中对齐)-----------------------------------------------------------------------------------------package com.tarena.day09.gui;import java.awt.FlowLayout;import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JTextField;public class TestFlow {	public static void main(String[] args) {		JFrame jf = new JFrame("TestFlow");		//创建窗口		JTextField jtf = new JTextField(20);	//创建文本框显示20个文字		JButton[] jb = new JButton[10];			//创建按钮数组		jf.setLayout(new FlowLayout());			//改布局管理器		jf.add(jtf);									//加入文本框		for (int i = 0; i < jb.length; i++) {	//循环加入按钮			jb[i] = new JButton(""+i);			jf.add(jb[i]);		}		jf.setSize(300,200);		jf.setVisible(true);		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	}}-----------------------------------------------------------------------------------------1.BorderLayout是JFrame和JDialog的默认布局管理器2.BorderLayout不保持组件原有大小,组件会填满区域3.把窗口分为东南西北中五部分,南北占整行,列固定								东西不占整列,行固定,默认中部,中部是不固定的-----------------------------------------------------------------------------------------package com.tarena.day09.gui;import java.awt.BorderLayout;import javax.swing.*;public class TestBorder {	public static void main(String[] args) {		JFrame jf = new JFrame("TestFlow");		String[] label = {"东","南","西","北","中"};		JButton[] jb = new JButton[label.length];		for (int i = 0; i < jb.length; i++) {			jb[i] = new JButton(label[i]);		}		jf.add(jb[0],BorderLayout.EAST);		jf.add(jb[1],BorderLayout.SOUTH);		jf.add(jb[2],BorderLayout.WEST);		jf.add(jb[3],BorderLayout.NORTH);		jf.add(jb[4]);		jf.setSize(300,200);		jf.setVisible(true);		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	}}-----------------------------------------------------------------------------------------GridLayout	1.不保持组件的原始大小	2.从左到右,从上到下,每个网格放一个组件,如果没放完,允许空-----------------------------------------------------------------------------------------package com.tarena.day09.gui;import java.awt.GridLayout;import java.awt.BorderLayout;import javax.swing.*;public class TestGrid {	public static void main(String[] args) {		JFrame jf = new JFrame("First Frame");		JTextField jtf = new JTextField(20);		JPanel jp = new JPanel();		jp.setLayout(new GridLayout(2,5));		JButton[] jb = new JButton[10];		for (int i = 0; i < jb.length; i++) {			jb[i] = new JButton(i+"");			jp.add(jb[i]);					}		jf.add(jtf,BorderLayout.NORTH);		jf.add(jp);		jf.setSize(300,200);		jf.setVisible(true);		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	}}-----------------------------------------------------------------------------------------实现按钮监听1.写一个接口的子类 Actionlistener接口(java.set.event)的实现类,重写方法actionPerformed()2.为每个按钮加上 .addActionListener(子类对象)-----------------------------------------------------------------------------------------package com.tarena.day09.gui;import java.awt.FlowLayout;import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JTextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class TestFlow implements ActionListener{	JTextField jtf = new JTextField(20);	public TestFlow(){		JFrame jf = new JFrame("TestFlow");		//创建窗口		JButton[] jb = new JButton[10];					//创建按钮数组		jf.setLayout(new FlowLayout());					//改布局管理器		jf.add(jtf);																	//加入文本框		for (int i = 0; i < jb.length; i++) {	//循环加入按钮			jb[i] = new JButton(""+i);			jb[i].addActionListener(this);			jf.add(jb[i]);		}		jf.setSize(300,200);		jf.setVisible(true);		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	}	public void actionPerformed(ActionEvent e) {		String comm = e.getActionCommand();	//取得按钮的label		if ("0".equals(comm)) {			System.out.println("0 is called");		}		jtf.setText(comm);	//设置文本窗的内容		}		public static void main(String[] args) {				new TestFlow();	}}-----------------------------------------------------------------------------------------作业:计算器:菜单不做,按钮做:Backspace-->退格(删除一个数字) 取文本框:String temp = jtf.getText();再调subString,最后setText		CE/c-->清零(setText等于零)		+/-正负号	顺序:		backspace,CE,C,+		7,8,9,-		4,5,6,*		1,2,3,/		0,+/-,.,=	按数字-->按运算符-->再写第二个数字-->按等号算结果	基础不好的同学要求作出界面,基础好的尽可能实现功能

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -