为期两周的课程设计中,我选的课题是小型图书管理系统,该系统有如下功能:
用户登陆和注册、用户信息查看(个人信息,图书借阅情况,到期归还提醒,个人读书笔记管理,个人读书计划管理)
在编写程序的过程中,遇到了如下的问题:
1、两个不同的操作如何实现同一个接口
在程序中有一个键盘事件,就是判断文本框中输入日期时按照统一的格式自动添加“-”,如2012-09-09,如果只有一个文本框的话,那么简单,直接注册一个键盘事件监听器就能故解决,但是同时从在两个文本框的话,同一个键盘事件显然不能处理两个文本框的内容。
txtStartTime.addKeyListener(this);
txtEndTime.addKeyListener(this);
public void keyReleased(KeyEvent e){
if(e.getKeyCode()!=e.VK_BACK_SPACE){
if(txtStartTime.getText().length()==4||
txtStartTime.getText().length()==7){
txtStartTime.setText(txtStartTime.getText()+"-");
}
}
}
public void keyPressed(KeyEvent e){
}
public void keyTyped(KeyEvent e){
if(txtStartTime.getText().length()>=10)
txtStartTime.setText(txtStartTime.getText().substring(0,9));
}
这样显然不行,当在第二个文本框中操作时,仍然更改的是第一个文本框中内容。
这时候可以利用内部类,来实现同一个接口,响应不同的事件源。
txtStartTime.addKeyListener(new StartTimeClass());
txtEndTime.addKeyListener(new EndTimeClass());
class StartTimeClass implements KeyListener{
/*
* (non-Javadoc)
* @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
*/
@SuppressWarnings("static-access")
public void keyReleased(KeyEvent e){
if(e.getKeyCode()!=e.VK_BACK_SPACE){
if(txtStartTime.getText().length()==4||
txtStartTime.getText().length()==7){
txtStartTime.setText(txtStartTime.getText()+"-");
}
}
}
public void keyPressed(KeyEvent e){
}
public void keyTyped(KeyEvent e){
if(txtStartTime.getText().length()>=10)
txtStartTime.setText(txtStartTime.getText().substring(0,9));
}
}
class EndTimeClass implements KeyListener{
/*
* (non-Javadoc)
* @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
*/
@SuppressWarnings("static-access")
public void keyReleased(KeyEvent e){
if(e.getKeyCode()!=e.VK_BACK_SPACE){
if(txtEndTime.getText().length()==4||
txtEndTime.getText().length()==7){
txtEndTime.setText(txtEndTime.getText()+"-");
}
}
}
public void keyPressed(KeyEvent e){
}
public void keyTyped(KeyEvent e){
if(txtEndTime.getText().length()>=10)
txtEndTime.setText(txtEndTime.getText().substring(0,9));
}
}
2、窗口执行addWindowListener之后自动关闭的问题
我使用如下方法关闭窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
int result=JOptionPane.showConfirmDialog(null, "您确定离开?","系统消息提示",
JOptionPane.YES_NO_OPTION);
if(result==JOptionPane.YES_OPTION){
dispose();
new UserGUI(USERNAME);
}else{
//do nothing
}
}
});
这种情况下不管你单击“是”还是“否”,系统都会关闭窗口。一直没有想明白原因,后来发现,原来setDefaultCloseOperation()的默认属性是close,这样,用户在窗体上发起close是就默认关闭了,只要把它的属性改成DO_NOTHING_ON_CLOSE就可以了。
3、如何把char型的数字转换成INT型
char型和int型之间没有直接的转换方式,只能先把char型转换成string,然后再把string转换成int
4、关于substring(start,end)方法的问题
substring(start,end)方法是获取从start开始到end结束,但是不包括end的字符串,我们很多情况下都会忽略,以为获取的字符串中也有end字符。
5、关于calendar类
在进行时间处理时,calendar是少不了的。但是对于calendar有一些需要注意的问题:
用calendar获取的月份要+1
用calendar获取的星期要-1
将calendar翻到某个时间是,月份要-1
6、listSelectionListener的问题
listSelectionListener的事件valueChanged(LiseSelectionEvent e){}方法,在函数选中是,时间会执行两次,分别是鼠标单击和鼠标释放,很多人都会忽略这个问题,在编写程序中,这两次执行,往往会导致漏洞,我们可以利用getValueIsAdjusting()获得的值来区分,如果为true,是鼠标按下,如果为false,是鼠标离开。
public void valueChanged(ListSelectionEvent e){
if(e.getValueIsAdjusting()==true){
}else{
i=table.getSelectedRow();
outputData();
}
}
7、关于JTable的问题,这个需要专门讨论,这里只是标记一下。
分享到:
相关推荐
数据库课程设计——图书管理系统的开发任务书.docx数据库课程设计——图书管理系统的开发任务书.docx数据库课程设计——图书管理系统的开发任务书.docx数据库课程设计——图书管理系统的开发任务书.docx数据库课程...
介绍了小型学生成绩管理系统的各个模块的功能,主要围绕Visual Basic的...介绍了小型学生成绩管理系统的总体分析与设计,包括需求分析、功能模块分析和数据库设计。最后通过图片的形式详细的阐述了系统各个功能的实现。
C语言课程设计——职工信息管理系统设计 (2).pdfC语言课程设计——职工信息管理系统设计 (2).pdfC语言课程设计——职工信息管理系统设计 (2).pdfC语言课程设计——职工信息管理系统设计 (2).pdfC语言课程设计——...
JavaWeb课程设计——图书馆管理系统.docxJavaWeb课程设计——图书馆管理系统.docxJavaWeb课程设计——图书馆管理系统.docxJavaWeb课程设计——图书馆管理系统.docxJavaWeb课程设计——图书馆管理系统.docxJavaWeb...
JavaWeb课程设计——图书馆管理系统.pdfJavaWeb课程设计——图书馆管理系统.pdfJavaWeb课程设计——图书馆管理系统.pdfJavaWeb课程设计——图书馆管理系统.pdfJavaWeb课程设计——图书馆管理系统.pdfJavaWeb课程设计...
java毕业设计——java图书管理系统的设计与实现(源代码+论文).zip java毕业设计——java图书管理系统的设计与实现(源代码+论文).zip java毕业设计——java图书管理系统的设计与实现(源代码+论文).zip java毕业设计...
数据库课程设计——库存销售管理系统【范本模板】.docx数据库课程设计——库存销售管理系统【范本模板】.docx数据库课程设计——库存销售管理系统【范本模板】.docx数据库课程设计——库存销售管理系统【范本模板】....
(完整word版)数据库课程设计——库存销售管理系统.pdf(完整word版)数据库课程设计——库存销售管理系统.pdf(完整word版)数据库课程设计——库存销售管理系统.pdf(完整word版)数据库课程设计——库存销售管理系统.pdf...
JavaWeb课程设计——图书馆管理系统.pptx
这是我的数据库课程设计作品!压缩包里有程序源代码、软件文档、程序录像、演示文稿等。非常适合大家研究学习,...本设计所完成的图书馆管理系统软件是一功能比较完善的数据管理软件,具有数据操作方便高效迅速等优点。
很全的UML课程设计——图书管理系统,附有报告及rose做的图。
大数据库课程设计——图书管理系统.docx
C语言课程设计——图书信息管理系统,2000+,CUI,无抄袭,纯原创,有注释,适合初学者,比你想象的要复杂一点......
大数据结构课程设计——仓库管理系统源程序.pdf大数据结构课程设计——仓库管理系统源程序.pdf大数据结构课程设计——仓库管理系统源程序.pdf大数据结构课程设计——仓库管理系统源程序.pdf大数据结构课程设计——...
大数据结构课程设计——仓库管理系统源程序.docx大数据结构课程设计——仓库管理系统源程序.docx大数据结构课程设计——仓库管理系统源程序.docx大数据结构课程设计——仓库管理系统源程序.docx大数据结构课程设计...
数据库课程设计——图书管理系统.pdf
C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书管理系统.zip C语言项目——图书...