java的UI程序 简单 排错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的UI程序 简单 排错相关的知识,希望对你有一定的参考价值。
这个是我从eclipse上面考下来的 我运行了没有任何输出结果 那个OK打不出来 怎么办
public class KeyEvent
/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
new KeyFrame().Actual();
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.KeyAdapter;
public class KeyFrame extends Frame
public void Actual()
setLayout(null);
setBounds(300,300,500,500);
setBackground(new Color(38,56,78));
addKeyListener(new MyKeyMonitor());
setVisible(true);
class MyKeyMonitor extends KeyAdapter
public void keyPressed(KeyEvent e)
System.out.println("OK!");
谢谢啊
解决的方法有两个,一个是改变你MAIN类的名字,二是指明MyKeyMonitor类keyPressed方法入参的明确包,即写成public void keyPressed(java.awt.event.KeyEvent e) 参考技术A /*说实话,你的程序写的有点不合理。改后是按下空格键就打印出 ok!具体情况看注释吧!我把这两个类写一个文件中了。*/
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.KeyAdapter;
/*这个类名取的也不好,跟java.awt.event.KeyEvent中的KeyEvent重名了,导致以后的麻烦。*/
public class KeyEvent
public static void main(String[] args)
new KeyFrame().Actual();
class KeyFrame extends Frame
public void Actual()
setLayout(null);
setBounds(300, 300, 500, 500);
setBackground(new Color(38, 56, 78));
addKeyListener(new MyKeyMonitor());
setVisible(true);
/*这个类继承了KeyAdapter但是你没有重写KeyAdapter的任何一个方法,
所以按下任何键都没有效果,我帮你重写了KeyAdapter的一个方法。建议你看一下帮助文档。*/
class MyKeyMonitor extends KeyAdapter
@Override
public void keyPressed(java.awt.event.KeyEvent e)
/*当按下空格键时,打印这句话,KeyEvent.VK_SPACE就不解释了。看一下帮助文档就ok了!*/
if(e.getKeyCode() == java.awt.event.KeyEvent.VK_SPACE)
System.out.println("ok!");
Java程序排错定位
目录
一、错误的分类
程序运行出错指的是程序未按照程序预设的逻辑执行,从而造成非预期的结果,具体表现就是报错中断或数据错误。作为程序员,一定要分清哪口锅是自己的,对于设计中的预设错误一定要甩出去,例如:传入参数不合法、违反业务规则等等。本节,我们只考虑自己的锅。自己这口锅里能装的错误也很多,但是我们不考虑纯粹的认为因素造成的运行出错(例如版本遗漏、配置错误等等)。
1、有报错的错误
造成这一类错误的原因,主要有:
A. 开发过程不严谨,没有进行必要的判断或没有充分的考虑各种可能的分支(这就是为毛好些java规范里要求if和else要成对出现的原因),这类错误里最为常见的异常就是空指针、下标越界、除数为0等运行时异常了;
B. 内存泄露问题。java对指针进行的透明化处理,GC操作大多数时间也由JVM自主完成,但是毕竟内存中的数据是程序在运行过程中塞进去的,如果数据的生命周期设计存在问题的话,很容易会造成OOM错误。前段时间和一个朋友就聊到了这个问题,他所在公司的一个项目就是因为未及时释放有效数据导致jvm内存占用持续增高,即使JVM执行FullGC操作后,内存占用率依旧很高,从而导致OOM错误。
C. 捕获的范围小了,预期外的错误未捕获。在一个项目中就遇到过这种情况,程序只对Exception进行了捕获,未捕获Error,导致程序在抛出了一个Error(那次是一次人为的原因)而导致未回滚数据库事务,造成了锁表。
2、没报错的错误
造成这一类错误的原因,主要有:
A. 虽然抛出了错误,但是被吃掉了。就是在catch到Exception后没有进行任何处理,包括打印日志。这个的原因就不多说了...说多了都是泪。
B. 程序正常执行完成,但是结果不符合预期。这个原因很可能是程序未对并发安全进行设计。
C. 无限等待,超时时间设置不合理或者死锁。
二、错误的定位
定位错误是有一个大概的顺序的。
1、检查有没有报错信息
日志文件中登记的错误,这个算是最简单的,在定位错误时,也最希望问题在这一步得到确认。在打印异常时,通常会打印异常的调用栈信息,通过调用栈信息就可以很便捷的定位问题了。
2、检查标准输出文件和异常输出文件有没有报错信息
Error可能不会打印在日志文件中(如果关掉了标准输出就不会打印了),但是会打印在标准输出中,前提是没有把标准输出也吃掉。通常在出现错误时,单单通过检查日志来定位问题怕是不足以说明问题,通常还会配合dump文件进行分析,因此在程序启动时需要开启相应参数(-XX:+HeapDumpOnOutOfMemoryError),在JVM出现内存溢出异常时Dump出当前的内存堆转储快照以便后续进行分析。
3、看代码
以上是关于java的UI程序 简单 排错的主要内容,如果未能解决你的问题,请参考以下文章