java项目开发-- 进销存管理系统1 - 图文(6)

2019-08-30 16:16

41. sysManagePanel.setBackground(new Color(215, 223, 194)); 42. sysManagePanel.setLayout(new BoxLayout

(sysManagePanel, BoxLayout.X_AXIS));

43. sysManagePanel.add(createFrameButton(\操作员管理\ 44. sysManagePanel.add(createFrameButton(\更改密码

\

45. sysManagePanel.add(createFrameButton(\权限管理

\

46. //将所有面板添加到导航面板中

47. tabbedPane.addTab(\基础信息管理 \

baseManagePanel, \基础信息管理\

48. tabbedPane.addTab(\进货管理 \

stockManagePanel, \进货管理\

49. tabbedPane.addTab(\销售管理 \

sellManagePanel, \销售管理\

50. tabbedPane.addTab(\查询统计 \

searchStatisticPanel, \查询统计\

51. tabbedPane.addTab(\库存管理 \

depotManagePanel, \库存管理\

52. tabbedPane.addTab(\系统管理 \

sysManagePanel, \系统管理\ 53. return tabbedPane; 54. }

(2)编写createFrameButton()方法,该方法负责创建Action对象,该对象用于创建并显示窗体对象。另外,它还包含图标、文本等属性。如果将Action对象添加到系统菜单栏或者工具栏中,会直接创建相应的菜单项和工具按钮,而且这些菜单项和工具按钮将显示Action对象中的文本和图标属性。本系统没有使用系统菜单,所以该方法将直接创建按钮对象。关键代码如下:

例程06 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\JXCFrame.java

1. 2. 3. 4. 5. 6. 7. 8. 9.

private JButton createFrameButton(String fName, String cname) { //为内部窗体添加 Action 的方法

String imgUrl = \ + fName + \

String imgUrl_roll = \ + fName + \ String imgUrl_down = \ + fName + \ Icon icon = new ImageIcon(imgUrl); //创建按钮图标

Icon icon_roll = null; if (imgUrl_roll != null)

icon_roll = new ImageIcon(imgUrl_roll); //创建鼠标经过按钮时的图标 Icon icon_down = null;

10. if (imgUrl_down != null)

11. icon_down = new ImageIcon(imgUrl_down);

//创建按钮按下的图标

12. Action action = new openFrameAction(fName, cname,

icon); //用 openFrameAction 类创建 Action 对象 13. JButton button = new JButton(action); 14. button.setMargin(new Insets(0, 0, 0, 0)); ? 15. button.setHideActionText(true); ? 16. button.setFocusPainted(false); ? 17. button.setBorderPainted(false); ? 18. button.setContentAreaFilled(false); ? 19. if (icon_roll != null)

20. button.setRolloverIcon(icon_roll); ? 21. if (icon_down != null)

22. button.setPressedIcon(icon_down); ? 23. return button; 1.5.2 创建导航面板(2) 代码贴士

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

setHideActionText():该方法用于设置按钮隐藏Action对象中的文本信息,例如一个只显示图标的按钮可以取消文本使按钮更加美观。

setFocusPainted():该方法用于设置按钮获取焦点时,是否绘制焦点样式。导航面板取消了这个焦点样式,因为它破坏了按钮图标的美观性。

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

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

(3)编写内部类openFrameAction,它必须继承AbstractAction类实现Action接口。该类用于创建导航按钮的Action对象,并为每个导航按钮定义创建并显示不同窗体对象的动作监听器,这个监听器在按钮被按下时,调用getIFrame()方法获取相应的窗体对象,并显示在主窗体中。关键代码如下: 例程07 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\JXCFrame.java

1.

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

2. 3. 4. 5. 6. 7. 8. 9.

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 的图标

10. }

11. public void actionPerformed(final ActionEvent e) { 12. JInternalFrame jf = getIFrame(frameName);

//调用 getIFrame() 方法

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

14. jf.addInternalFrameListener(new InternalFrameAdapter() { 15. public void internalFrameClosed(InternalFrameEvent e) {

16. ifs.remove(frameName); 17. } 18. });

19. if (jf.getDesktopPane() == null) {

20. desktopPane.add(jf);

//将窗体添加到主窗体中

21. jf.setVisible(true);

//显示窗体 22. } 23. try {

24. jf.setSelected(true);

//使窗体处于被选择状态

25. } catch (PropertyVetoException e1) { 26. e1.printStackTrace(); 27. } 28. } 29. }

(4)编写getIFrame()方法,该方法负责创建指定名称的窗体对象。在方法中使用了Java的反射技术,调用不同窗体类的默认构造方法创建窗体对象。关键代码如下:

例程08 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\JXCFrame.java

1.

private JInternalFrame getIFrame(String frameName) { //获取内部窗体的唯一实例对象

2. 3. 4. 5. 6. 7. 8. 9.

JInternalFrame jf = null;

if (!ifs.containsKey(frameName)) { try {

Class fClass = Class.forName(\e);

Constructor constructor = fClass.getConstructor(null); jf = (JInternalFrame) constructor.newInstance(null); ifs.put(frameName, jf); } catch (Exception e) {

10. e.printStackTrace(); 11. } 12. } else

13. jf = ifs.get(frameName); 14. return jf; 15. } 1.6 公共模块设计

在本系统的项目空间中,有部分模块(或者是多个模块甚至整个系统的配置信息)是公用的,它们被多个模块重复调用完成指定的业务逻辑,本节将这些公共模块提出来加以单独介绍。 1.6.1 编写Dao公共类(1)

Dao类主要负责有关数据库的操作,该类在静态代码段中驱动并连接数据库,然后将所有的数据库访问方法定义为静态的。本节将介绍Dao类中有关数据库操作的关键方法。Dao类的定义代码如下: 例程09 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\dao\\Dao.java

1. 2. 3. 4. 5. 6. 7. 8. 9.

public class Dao {

protected static String ?dbClassName = \microsoft.jdbc.sqlserver.SQLServerDriver\;

protected static String ?dbUrl = \sqlserver://localhost:1433;\

+ \DatabaseName=db_JXC;SelectMethod=Cursor\ protected static String ?dbUser = \; protected static String ?dbPwd = \; protected static String second = null; public static Connection ?conn = null; static {

10. try {

11. if (conn == null) {

12. Class.forName(dbClassName).newInstance();

//加载数据库驱动类

13. conn = DriverManager.getConnection(dbUrl,

dbUser, dbPwd); //获取数据库连接

14. }

15. } catch (Exception ee) { 16. ee.printStackTrace(); 17. } 18. } 19. } 代码贴士

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

该方法用于添加供应商的基础信息,它接收供应商的实体类TbGysinfo作方法的参数,然后把实体对象中的所有属性存入供应商数据表中。关键代码如下:

例程10 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\dao\\Dao.java

1. 2. 3. 4. 5. 6. 7. 8. 9.

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

public static boolean addGys(TbGysinfo gysInfo) { if (gysInfo == null) //如果供应商实体对象为空

return false; //则返回false

return insert(\getId() + \执行供应商添加

+ gysInfo.getName() + \ + gysInfo.getAddress() + \','\

+ gysInfo.getTel() + \ + gysInfo.getLian() + \

10. + gysInfo.getMail() + \ 11. } 2.getGysInfo()方法


java项目开发-- 进销存管理系统1 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:导游词(吴耀辉)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: