JTable设置行背景颜色及实现打印功能的示例代码_第1页
JTable设置行背景颜色及实现打印功能的示例代码_第2页
JTable设置行背景颜色及实现打印功能的示例代码_第3页
JTable设置行背景颜色及实现打印功能的示例代码_第4页
JTable设置行背景颜色及实现打印功能的示例代码_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JTable设置行背景颜色及实现打印功能的示例代码2008-01-14 15:24之前JAVA图形化编程一直用得很少,最近应朋友需要理事了两个.java文件,用于实现JTable设置行背景颜色及实现打印功能,相应示例代码如下:JAVA文件一,PlanetTable.classimport java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.

2、swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;/* 本类为JTable一个简单应用,实现了JTable的行颜色设置及表格的打印功能* */public class PlanetTable public static void main(String args) JFrame frame = new PlanetTableFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fra

3、me.setVisible(true);class PlanetTableFrame extends JFrame public PlanetTableFrame() / 用于控制每一行颜色的数组 String color = H, A, F, E, W ; setTitle(PlanetTable); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); / 定义JTable,实例成自己扩展的JTable类,并传入用于设定颜色的数组 final JTable table = new StyleTable(cells, columnNames, color); / 下

4、面这行代码可实现相邻两行颜色交替的效果,注意与上一行的区别/ final JTable table = new StyleTable(cells, columnNames); add(new JScrollPane(table), BorderLayout.CENTER); JButton printButton = new JButton(Print); printButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) try table.print(); cat

5、ch (java.awt.print.PrinterException e) e.printStackTrace(); ); JPanel buttonPanel = new JPanel(); buttonPanel.add(printButton); add(buttonPanel, BorderLayout.SOUTH);private Object cells = Mercury, new Double(2440.0), new Integer(0), new Boolean(false), Color.yellow , Venus, new Double(60520.0), new

6、Integer(0), new Boolean(false), Color.yellow , Earth, new Double(6378.0), new Integer(1), new Boolean(false), Color.blue , Mars, new Double(3397.0), new Integer(2), new Boolean(false), Color.red , Jupiter, new Double(71492.0), new Integer(16), new Boolean(false), Color.orange ;private String columnN

7、ames = Planet, Radius, Moons, Gaseous, Color ;private static final int DEFAULT_WIDTH = 400;private static final int DEFAULT_HEIGHT = 200;下面的类文件是实现颜色控制的核心所在,对于需要有背景颜色设定的表格只需在实例化JTable对象处,实例成StyleTable即可,注意前面绿色背景的文字。JAVA文件二,StyleTable .classimport java.awt.Color;import java.awt.Component;import javax.

8、swing.JTable;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;/* 本类实现了对JTable颜色的控制,提供了两套方案: * 1.实现了表格行两种颜色交替的效果 * 2.实现了用一个控制颜色的字符串数组来设置所对应行的颜色* * author Sidney* version 1.0 (2008-1-14)*/public class StyleTable extends JT

9、able /* 用于设定行颜色的数组*/private String color = null;public StyleTable() super();public StyleTable(Object rowData, Object columnNames) super(rowData, columnNames); paintRow();public StyleTable(Object rowData, Object columnNames, String color) super(rowData, columnNames); this.color = color; paintColorRow

10、();/* 根据color数组中相应字符串所表示的颜色来设置某行的颜色,注意,JTable中可以对列进行整体操作* 而无法对行进行整体操作,故设置行颜色实际上是逐列地设置该行所有单元格的颜色。*/public void paintRow() TableColumnModel tcm = this.getColumnModel(); for (int i = 0, n = tcm.getColumnCount(); i n; i+) TableColumn tc = tcm.getColumn(i); tc.setCellRenderer(new RowRenderer(); public vo

11、id paintColorRow() TableColumnModel tcm = this.getColumnModel(); for (int i = 0, n = tcm.getColumnCount(); i n; i+) TableColumn tc = tcm.getColumn(i); tc.setCellRenderer(new RowColorRenderer(); /* 定义内部类,用于控制单元格颜色,每两行颜色相间,本类中定义为蓝色和绿色。* * author Sidney* */private class RowRenderer extends DefaultTable

12、CellRenderer public Component getTableCellRendererComponent(JTable t, Object value, boolean isSelected, boolean hasFocus, int row, int column) /设置奇偶行的背景色,可在此根据需要进行修改 if (row % 2 = 0) setBackground(Color.BLUE); else setBackground(Color.GREEN); return super.getTableCellRendererComponent(t, value, isSe

13、lected, hasFocus, row, column); /* 定义内部类,可根据一个指定字符串数组来设置对应行的背景色* * author Sidney* */private class RowColorRenderer extends DefaultTableCellRenderer public Component getTableCellRendererComponent(JTable t, Object value, boolean isSelected, boolean hasFocus, int row, int column) /分支判断条件可根据需要进行修改 if (c

14、olorrow.trim().equals(E) setBackground(Color.RED); else if (colorrow.trim().equals(H) setBackground(Color.CYAN); else if (colorrow.trim().equals(A) setBackground(Color.BLUE); else if (colorrow.trim().equals(F) setBackground(Color.ORANGE); else setBackground(Color.WHITE); return super.getTableCellRen

15、dererComponent(t, value, isSelected, hasFocus, row, column); 我是刚学Swing的,请大哥们帮帮小弟!很急,我已经郁闷3天了! JTable当我选中一行时,就改变这一行的背景色!问题点数:50回复次数:5 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 修改 修改 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 删除 删除 HYPERLINK

16、 /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 举报 举报 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 引用 引用 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l replyachor#replyachor o 回复 回复 HYPERLINK /AddFriends/diggywang.ashx t _blank 加为好友 H

17、YPERLINK /guest/profile/post/send/diggywang.html t _blank 发送私信 HYPERLINK /Messages/diggywang.ashx t _blank 在线聊天 HYPERLINK /diggywang t _blank diggywang 等级:发表于:2007-04-26 21:21:571楼得分:13用tablecellrenderer HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 修改 修改 HYPERLINK /u/2007

18、0426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 删除 删除 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 举报 举报 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 引用 引用 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l replyachor#

19、replyachor o 回复 回复 HYPERLINK /AddFriends/chuan122345.ashx t _blank 加为好友 HYPERLINK /guest/profile/post/send/chuan122345.html t _blank 发送私信 HYPERLINK /Messages/chuan122345.ashx t _blank 在线聊天 HYPERLINK /chuan122345 t _blank chuan122345 等级:发表于:2007-04-27 12:29:052楼得分:13public static void makeFace(JTable

20、 table) try DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) if (row % 2 = 0) setBackground(Color.white); /设置奇数行底色 else if (row % 2 = 1) setBackground(ne

21、w Color(206, 231, 255); /设置偶数行底色 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); ; for (int i = 0; i table.getColumnCount(); i+) table.getColumn(table.getColumnName(i).setCellRenderer(tcr); catch (Exception ex) ex.printStackTrace(); HYPERLINK /u/20070426/

22、19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 修改 修改 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 删除 删除 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 举报 举报 HYPERLINK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l # o 引用 引用 HYPERL

23、INK /u/20070426/19/a982e0a3-1a5e-4336-9a30-c220d1406031.html l replyachor#replyachor o 回复 回复 HYPERLINK /AddFriends/chuan122345.ashx t _blank 加为好友 HYPERLINK /guest/profile/post/send/chuan122345.html t _blank 发送私信 HYPERLINK /Messages/chuan122345.ashx t _blank 在线聊天 HYPERLINK /chuan122345 t _blank chuan

24、122345 等级:发表于:2007-04-27 12:31:463楼得分:0主要是写个REANDER,我以前做过这效果 publicclass JTableCellRenderer extends JPanel implements TableCellRenderer private JComponent component = null; privatestaticfinallongserialVersionUID = 4814418916385836965L; /*透明?*/ privatebooleanisOpaque = true; public Component getTable

25、CellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) /*透明?*/ isOpaque = table.isOpaque(); /*获得TableModel*/ MyTableModel myTableModel = (MyTableModel)table.getModel(); boolean canSelected = true; List canSelectedList = myTableModel.getCanBeSelec

26、tedModel(); if(canSelectedList != null) if(row canSelectedList.size() if(!(Boolean)canSelectedList.get(row).booleanValue() canSelected = false; else canSelected = false; /*设定用于显示Cell的panel*/ JPanel cellPanel = new JPanel(); /*绘制Cell*/ getCell(table,cellPanel,row,canSelected,isSelected); int colorCha

27、ngeFlag = row/myTableModel.getDiv(); /*是否透明*/ if(isOpaque) if(colorChangeFlag % 2 = 0) cellPanel.setBackground(myTableModel.getRowBackgroundColor(); else cellPanel.setBackground(myTableModel.getFirstRowBackgroundColor(); /*设定是否透明 */ cellPanel.setOpaque(isOpaque); if(isSelected) cellPanel.setBackgrou

28、nd(table.getSelectionBackground(); rePaintComponents(); / MainRun.middlePanel.repaint(); return cellPanel; privatevoid getCell(JTable table,JPanel cellPanel,int row, boolean canSelected,boolean isSelected) /*设定对齐方式*/ cellPanel.setLayout(new FlowLayout(0,0,0); /*获得TableModel*/ MyTableModel myTableMod

29、el = (MyTableModel)table.getModel(); /*获得列数*/ int col = myTableModel.getCol(); for(int i = 0; i col ; i+ ) /*获得某个单元格*/ Object cellObject = myTableModel.getValueAt(row,i); /*/ JComponent tempLabel = null; /*String*/ if(cellObject instanceof String) tempLabel = new JLabel(String)cellObject); if(canSel

30、ected) Color cellColor = myTableModel.getColor(row,i); tempLabel.setForeground(cellColor); else tempLabel.setForeground(Color.gray); if(isSelected) tempLabel.setForeground(table.getSelectionForeground(); /*Icon*/ elseif(cellObject instanceof ImageIcon) tempLabel = new JLabel(ImageIcon)cellObject); /

31、*TextBox*/ elseif(cellObject instanceof JTextField) tempLabel = new JTextField(); else tempLabel = new JLabel(); if(cellObject instanceof JTextField) else /*对齐方式*/ switch(myTableModel.getCellLayout(i) /*左*/ case 0: (JLabel)tempLabel). setHorizontalAlignment(JLabel.LEFT); break; /*中*/ case 1: (JLabel

32、)tempLabel). setHorizontalAlignment(JLabel.CENTER); break; /*右*/ case 2: (JLabel)tempLabel). setHorizontalAlignment(JLabel.RIGHT); break; /*宽度设定*/ int width = myTableModel.getWidth(row,i); /*size设定*/ tempLabel.setPreferredSize (new Dimension(width,table.getRowHeight(); /*字体设定*/ tempLabel.setFont(tab

33、le.getFont(); /*设定是否透明*/ cellPanel.add(tempLabel); protectedvoid rePaintComponents() if (component != null) for (int i = 0; i component.length; i+) if (componenti != null) componenti.repaint(); public JComponent getComponent() returncomponent; publicvoid setComponent(JComponent component) ponent = c

34、omponent; 附录资料:如何处理Java异常及常见异常六种异常处理的陋习你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = . 2 java.sql.Connection conn = . 3 try / 4 Statement stat = conn.createStatement(); 5 ResultSet rs = stat.executeQuery( 6 select uid, name from user); 7 while (rs.ne

35、xt() 8 9 out.println(ID: + rs.getString(uid) / 10 ,姓名: + rs.getString(name); 11 12 conn.close(); / 13 out.close(); 14 15 catch(Exception ex) / 16 17 ex.printStackTrace(); /, 18 作为一个Java程序员,你至少应该能够找出两个问题。但是,如果你不能找出全部六个问题,请继续阅读本文。 本文讨论的不是Java异常处理的一般性原则,因为这些原则已经被大多数人熟知。我们要做的是分析各种可称为“反例”(anti-pattern)的违

36、背优秀编码规范的常见坏习惯,帮助读者熟悉这些典型的反面例子,从而能够在实际工作中敏锐地察觉和避免这些问题。 反例之一:丢弃异常 代码:15行-18行。 这段代码捕获了异常却不作任何处理,可以算得上Java编程中的杀手。从问题出现的频繁程度和祸害程度来看,它也许可以和C/C+程序的一个恶名远播的问题相提并论?不检查缓冲区是否已满。如果你看到了这种丢弃(而不是抛出)异常的情况,可以百分之九十九地肯定代码存在问题(在极少数情况下,这段代码有存在的理由,但最好加上完整的注释,以免引起别人误解)。 这段代码的错误在于,异常(几乎)总是意味着某些事情不对劲了,或者说至少发生了某些不寻常的事情,我们不应该对

37、程序发出的求救信号保持沉默和无动于衷。调用一下printStackTrace算不上“处理异常”。不错,调用printStackTrace对调试程序有帮助,但程序调试阶段结束之后, printStackTrace就不应再在异常处理模块中担负主要责任了。 丢弃异常的情形非常普遍。打开JDK的ThreadDeath类的文档,可以看到下面这段说明:“特别地,虽然出现ThreadDeath是一种正常的情形,但ThreadDeath类是Error而不是Exception的子类,因为许多应用会捕获所有的Exception然后丢弃它不再理睬。”这段话的意思是,虽然ThreadDeath代表的是一种普通的问题,

38、但鉴于许多应用会试图捕获所有异常然后不予以适当的处理,所以JDK把 ThreadDeath定义成了Error的子类,因为Error类代表的是一般的应用不应该去捕获的严重问题。可见,丢弃异常这一坏习惯是如此常见,它甚至已经影响到了Java本身的设计。 那么,应该怎样改正呢?主要有四个选择: 1、处理异常。针对该异常采取一些行动,例如修正问题、提醒某个人或进行其他一些处理,要根据具体的情形确定应该采取的动作。再次说明,调用printStackTrace算不上已经“处理好了异常”。 2、重新抛出异常。处理异常的代码在分析异常之后,认为自己不能处理它,重新抛出异常也不失为一种选择。 3、把该异常转换成

39、另一种异常。大多数情况下,这是指把一个低级的异常转换成应用级的异常(其含义更容易被用户了解的异常)。 4、不要捕获异常。 结论一:既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。 反例之二:不指定具体的异常 代码:15行。 许多时候人们会被这样一种“美妙的”想法吸引:用一个catch语句捕获所有的异常。最常见的情形就是使用catch(Exception ex)语句。但实际上,在绝大多数情况下,这种做法不值得提倡。为什么呢? 要理解其原因,我们必须回顾一下catch语句的用途。catch语句表示我们预期会出现某种异常,而且希望能够处理该异常。异常类的作用就是告诉 J

40、ava编译器我们想要处理的是哪一种异常。由于绝大多数异常都直接或间接从java.lang.Exception派生,catch (Exception ex)就相当于说我们想要处理几乎所有的异常。 再来看看前面的代码例子。我们真正想要捕获的异常是什么呢?最明显的一个是SQLException,这是JDBC操作中常见的异常。另一个可能的异常是IOException,因为它要操作OutputStreamWriter。显然,在同一个catch块中处理这两种截然不同的异常是不合适的。如果用两个catch块分别捕获SQLException和IOException就要好多了。这就是说,catch语句应当尽量指

41、定具体的异常类型,而不应该指定涵盖范围太广的Exception类。 另一方面,除了这两个特定的异常,还有其他许多异常也可能出现。例如,如果由于某种原因,executeQuery返回了null,该怎么办?答案是让它们继续抛出,即不必捕获也不必处理。实际上,我们不能也不应该去捕获可能出现的所有异常,程序的其他地方还有捕获异常的机会?直至最后由JVM处理。 结论二:在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。 反例之三:占用资源不释放 代码:3行-14行。 异常改变了程序正常的执行流程。这个道理虽然简单,却常常被人们忽视。如果程序用到了文件、

42、Socket、JDBC连接之类的资源,即使遇到了异常,也要正确释放占用的资源。为此,Java提供了一个简化这类操作的关键词finally。 finally是样好东西:不管是否出现了异常,Finally保证在try/catch/finally块结束之前,执行清理任务的代码总是有机会执行。遗憾的是有些人却不习惯使用finally。 当然,编写finally块应当多加小心,特别是要注意在finally块之内抛出的异常?这是执行清理任务的最后机会,尽量不要再有难以处理的错误。 结论三:保证所有资源都被正确释放。充分运用finally关键词。反例之四:不说明异常的详细信息 代码:3行-18行。 仔细观察

43、这段代码:如果循环内部出现了异常,会发生什么事情?我们可以得到足够的信息判断循环内部出错的原因吗?不能。我们只能知道当前正在处理的类发生了某种错误,但却不能获得任何信息判断导致当前错误的原因。 printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程,但只提供了一些最基本的信息,未能说明实际导致错误的原因,同时也不易解读。 因此,在出现异常时,最好能够提供一些文字信息,例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组织printStackTrace提供的信息。 结论四:在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。 反例

44、之五:过于庞大的try块 代码:3行-14行。 经常可以看到有人把大量的代码放入单个try块,实际上这不是好习惯。这种现象之所以常见,原因就在于有些人图省事,不愿花时间分析一大块代码中哪几行代码会抛出异常、异常的具体类型是什么。把大量的语句装入单个巨大的try块就象是出门旅游时把所有日常用品塞入一个大箱子,虽然东西是带上了,但要找出来可不容易。 一些新手常常把大量的代码放入单个try块,然后再在catch语句中声明Exception,而不是分离各个可能出现异常的段落并分别捕获其异常。这种做法为分析程序抛出异常的原因带来了困难,因为一大段代码中有太多的地方可能抛出Exception。 结论五:尽

45、量减小try块的体积。 反例之六:输出数据不完整 代码:7行-11行。 不完整的数据是Java程序的隐形杀手。仔细观察这段代码,考虑一下如果循环的中间抛出了异常,会发生什么事情。循环的执行当然是要被打断的,其次, catch块会执行?就这些,再也没有其他动作了。已经输出的数据怎么办?使用这些数据的人或设备将收到一份不完整的(因而也是错误的)数据,却得不到任何有关这份数据是否完整的提示。对于有些系统来说,数据不完整可能比系统停止运行带来更大的损失。 较为理想的处置办法是向输出设备写一些信息,声明数据的不完整性;另一种可能有效的办法是,先缓冲要输出的数据,准备好全部数据之后再一次性输出。 结论六:

46、全面考虑可能出现的异常以及这些异常对执行流程的影响。 改写后的代码 根据上面的讨论,下面给出改写后的代码。也许有人会说它稍微有点?嗦,但是它有了比较完备的异常处理机制。 OutputStreamWriter out = . java.sql.Connection conn = . try Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery( select uid, name from user); while (rs.next() out.println(ID: + rs.getString(uid

47、) + ,姓名: + rs.getString(name); catch(SQLException sqlex) out.println(警告:数据不完整); throw new ApplicationException(读取数据时出现SQL错误, sqlex); catch(IOException ioex) throw new ApplicationException(写入数据时出现IO错误, ioex); finally if (conn != null) try conn.close(); catch(SQLException sqlex2) System.err(this.getCl

48、ass().getName() + .mymethod - 不能关闭数据库连接: + sqlex2.toString(); if (out != null) try out.close(); catch(IOException ioex2) System.err(this.getClass().getName() + .mymethod - 不能关闭输出文件 + ioex2.toString(); 本文的结论不是放之四海皆准的教条,有时常识和经验才是最好的老师。如果你对自己的做法没有百分之百的信心,务必加上详细、全面的注释。 另一方面,不要笑话这些错误,不妨问问你自己是否真地彻底摆脱了这些坏习

49、惯。即使最有经验的程序员偶尔也会误入歧途,原因很简单,因为它们确确实实带来了“方便”。所有这些反例都可以看作Java编程世界的恶魔,它们美丽动人,无孔不入,时刻诱惑着你。也许有人会认为这些都属于鸡皮蒜毛的小事,不足挂齿,但请记住:勿以恶小而为之,勿以善小而不为。下面是一些 java异常集 算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException数组负下标异常:NegativeArrayException数组下标越界异常:ArrayIndexOutOfBoundsException违背安全原则异

50、常:SecturityException文件已结束异常:EOFException文件未找到异常:FileNotFoundException字符串转换为数字异常:NumberFormatException操作数据库异常:SQLException输入输出异常:IOException方法未找到异常:NoSuchMethodExceptionjava.lang.AbstractMethodError抽象方法错误。当应用试图调用抽象方法时抛出。java.lang.AssertionError断言错。用来指示一个断言失败的情况。java.lang.ClassCircularityError类循环依赖错误。

51、在初始化一个类时,若检测到类之间循环依赖则抛出该异常。java.lang.ClassFormatError类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。java.lang.Error错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。java.lang.ExceptionInInitializerError初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。java.lang.IllegalAccessError

52、违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。java.lang.IncompatibleClassChangeError不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。java.lang.InstantiationError实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.java.lang.InternalError内部错误。用于指示Java虚拟

53、机发生了内部错误。java.lang.LinkageError链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。java.lang.NoClassDefFoundError未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。java.lang.NoSuchFieldError域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。java.lang.NoSuchMethodError方法不存在错误。当应用试图调用某类的某个方法

54、,而该类的定义中没有该方法的定义时抛出该错误。java.lang.OutOfMemoryError内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。java.lang.StackOverflowError堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。java.lang.ThreadDeath线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。java.lang.UnknownError未知错误。用于指示Java虚拟机发生了未知严重错误的情况。java.lang.UnsatisfiedLinkError未满足的链接错误。当J

55、ava虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。java.lang.UnsupportedClassVersionError不支持的类版本错误。当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误。java.lang.VerifyError验证错误。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。java.lang.VirtualMachineError虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。java.lang.ArithmeticException算术条件异常。譬如

56、:整数除零等。java.lang.ArrayIndexOutOfBoundsException数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。java.lang.ArrayStoreException数组存储异常。当向数组中存放非数组声明类型对象时抛出。java.lang.ClassCastException类造型异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。java.lang.ClassNotFoundException找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CL

57、ASSPAH之后找不到对应名称的class文件时,抛出该异常。java.lang.CloneNotSupportedException不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。java.lang.EnumConstantNotPresentException枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。java.lang.Exception根异常。用以描述应用程序希望捕获的情况。java.lang.IllegalAccessException违法的访问异常。当应用试图通

58、过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。java.lang.IllegalMonitorStateException违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。java.lang.IllegalStateException违法的状态异常。当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。java.lang.IllegalThreadStateException违法的线程状态异常。当县城尚未处于某

59、个方法的合法调用状态,而调用了该方法时,抛出异常。java.lang.IndexOutOfBoundsException索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。java.lang.InstantiationException实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。java.lang.InterruptedException被中止异常。当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。java.lang.Negat

60、iveArraySizeException数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。java.lang.NoSuchFieldException属性不存在异常。当访问某个类的不存在的属性时抛出该异常。java.lang.NoSuchMethodException方法不存在异常。当访问某个类的不存在的方法时抛出该异常。java.lang.NullPointerException空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。java.lan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论