第一范文网 - 专业文章范例文档资料分享平台

JAVA进销存管理系统攻坚笔记一

来源:用户分享 时间:2025/6/18 9:08:01 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。) 为了简化事件处理,Swing库使用Action接口扩展了原始的ActionListener接口来存储具有事件处理器的可视属性。这使得事件处理器的创建独立于可视化组件。然后,当Action在稍后与一个组件相关联时,组件直接由事件处理器自动获取信息(例如按钮标签)。

ActionButton定义按钮和菜单项的一般行为。按钮可以进行配置,以及通过Action进行某种程度的控制。使用带有按钮的Action具有除直接配置按钮之外的许多优点。许多Swing的组件都具有Action属性。在组件上设置Action时,会发生一下几种情况:Action被作为ActionListener添加到组件;组件配置自身的某些属性以匹配Action;组建在Action上安装PropertyChangeListener,这样组件可更改其属性以反映 Action 属性中的更改。 下面是系统中用到的几个ActionButton方法: ? ?

setMargin():该方法用于设置按钮的四周边界大小。

setHideActionText():该方法用于设置按钮隐藏Action对象中的文本信息,例如一个只显示图标的按钮可以取消文本是按钮更加美观。我们来对比一下: 系统设置后的标准情况:

没有隐藏Action对象中的文本信息的情况:

?

setFocusPainted():该方法用于设置按钮获取焦点时,是否绘制焦点样式。导航面板取消了这个焦点样式,因为它破坏了按钮图标美观性。大家可以尝试一下,当参数设置为true时选中的按钮周围会有一个虚线方框,影像美观。 ?

setBorderPainted():该方法设置是否绘制按钮的边框样式,导航面板取消了边框样式,因为按钮的图标需要覆盖整个按钮。 没有取消边框样式的情况:

?

setContentAreaFilled():该方法设置是否绘制按钮图形,在不同的操作系统,甚至系统不同的皮肤样式中都有不同的图形。导航面板取消了按钮的图形效果,因为导航面板要使用图标绘制整个按钮。 没有取消按钮图形效果的情况:

? ?

setRolloverIcon():该方法用于设置鼠标经过按钮时,按钮所使用的图标。 setPressedIcon():该方法用于设置鼠标按下时,按钮所使用的图标。

// 主窗体菜单项的单击事件监听器 protected final class openFrameAction extends AbstractAction {

}

private String frameName = null; private openFrameAction() {}

public openFrameAction(String cname, String frameName, Icon icon) {

this.frameName = frameName;

putValue(Action.NAME, cname); //设置Action的名称

putValue(Action.SHORT_DESCRIPTION, cname); //设置Action文本框

putValue(Action.SMALL_ICON, icon); //设置Action的图标 }

public void actionPerformed(final ActionEvent e) { }

JInternalFrame jf = getIFrame(frameName);

// 在内部窗体闭关时,从内部窗体容器ifs对象中清除该窗体。

jf.addInternalFrameListener(new InternalFrameAdapter() {

public void internalFrameClosed(InternalFrameEvent e) { }

ifs.remove(frameName);

});

if (jf.getDesktopPane() == null) { } try { }

jf.setSelected(true); e1.printStackTrace();

} catch (PropertyVetoException e1) {

desktopPane.add(jf); jf.setVisible(true);

openFrameAction类继承了AbstractAction类实现了Action接口。该类用于创建导航按钮的Action对象,并为每个导航按钮定义创建并显示不同窗体对象的动作监听器,这个监听器在被按钮被按下时,调用getIFrame()方法获取相应的窗体对象,并显示在主窗体中。 AbstractionAction.putValue()方法设置与指定键关联的 Value。

getIFrame()方法负责创建指定名称的窗体对象,在方法中使用了Java的反射技术,调用不同窗体类的默认构造方法创建窗体的对象。

反射就是把Java类中的各种成分映射成为相应的Java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成成分:成员变量,方法,构造方法,包等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速器等等也是一个个的类。表示Java类的Class类显然要提供一系列的方法,来获取其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,他们是Field、Method、Contructor、Package等等。Field类代表某个类中的一个成员变量;Method类代表某个类中的一个成员方法;Constructor类代表某个类中的一个构造方法。

公共模块设计

在本系统的项目空间中,有部分模块是公用的,或者是多个模块甚至整个系统的配置信息,他们被多个模块重复调用完成指定的业务逻辑,下面我们将分别介绍这些公共模块。

Dao公共类

protected static String dbClassName =\;

protected static String dbUrl =\; protected static String dbUser = \; protected static String dbPwd = \; protected static String second = null; public static Connection conn = null; static { }

try { }

if (conn == null) { }

ee.printStackTrace();

Class.forName(dbClassName).newInstance();

conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);

} catch (Exception ee) {

Dao公共类主要负责有关数据库的操作,该类在静态代码块中加载驱动并连接数据库,然后将所有的数据库访问方法定义为静态的。 ? ? ? ? ?

dbClassName:该成员变量用于定义数据库驱动类的名称。 dbUrl:该成员变量用于定义访问数据库的URL路径。 dbUser:该成员变量用于定义访问数据库的用户名。 dbPwd:该成员变量用于定义访问数据库的用户密码。 conn:该成员变量用于定义连接数据库的对象。

// 添加供应商信息的方法

public static boolean addGys(TbGysinfo gysInfo) { }

addGys()方法用于添加供应商的基础信息,它接受供应商的实体类TbGysinfo作方法的参数,然后把实体对象的所有属性存入供应商数据表中。

if (gysInfo == null)

return false;

+ gysInfo.getName() + \ + gysInfo.getJc() + \ + gysInfo.getAddress() + \ + gysInfo.getBianma() + \ + gysInfo.getTel() + \ + gysInfo.getFax() + \ + gysInfo.getLian() + \ + gysInfo.getLtel() + \ + gysInfo.getMail() + \ + gysInfo.getYh() + \);

return insert(\tb_gysinfo values('\ + gysInfo.getId() + \

public class TbGysinfo implements java.io.Serializable {

private String id; public TbGysinfo() {}

public TbGysinfo(String id) { this.id = id;

}

public String getId() { return this.id; }

public String getId() { return this.id; } }

供应商的基础信息包括id,name等,在这里我们仅以id为例。

为了外部用户能够访问某些私有变量,通常类的设计者会提供一些方法给外部调用,这些方法被称为访问接口。私有变量很好地贯彻了封装原则,所有的私有变量都只能通过程序员设计的接口来访问,任何外部使用者都无法直接访问它,所以有很高的安全性。但是通过接口访问私有变量,将降低程序的性能,这样就往往需要我们在安全性和效率间取得一个平衡。

程序中黄色衬底突出的部分:是一个无参构造方法和一个带参数的构造方法。Java规定,如果程序员一个构造方法都不定义,那么系统会自动为其加上一个不带参数的构造方法。如果程序员至少定义了一个构造方法,那么系统不会再提供不带参数的构造方法。强烈建议程序员在定义带参数的构造方法时,也要定义一个不带参数的构造方法,即便这个构造方法什么事情也不做,否则存在着很大的安全威胁。

程序中淡蓝色衬底突出的部分:类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。

序列化简单的说就是为了保存在内存中的各种对象的状态(也就是变量,不是方法),并且可以把保存的对象状态再读出来。

需要进行序列化的情况:@1、当你想把内存中的对象写入到硬盘上的时候,或者把内存中的对象保存到数据库中的时候。比如说你的内存不够用了,那计算机就要将内存里面的一部分对象暂时的保存到硬盘中,等到要用的时候再读入到内存中,硬盘的那部分存储空间就是所谓的虚拟内存。在比如过你要将某个特定的对象保存到文件中,我隔几天在把它拿出来用,那么这时候就要实现Serializable接口;@2、当你想用套接字在网络上传送对象的时候;@3、当你想通过RMI传输对象的时候。

// 读取所有供应商信息

public static List getGysInfos() { }

List list = findForList(\); return list;

进货管理模块设计

搜索更多关于: JAVA进销存管理系统攻坚笔记一 的文档
JAVA进销存管理系统攻坚笔记一.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0gcwm1gxmt6zh7s4fk5w_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top