• 【JAVA】-- 简易超市管理系统(二)(实现思路+每步代码)


    前面已经完成了界面标题和四个按钮,

    现在开始完成“增加内容”按钮的具体功能。

    一、创建增加内容类

    创建一个增类,实现增类的功能;

    然后创建面板组件,把类添加到面板组件中,

    因为使用网格包布局,所以创建一个实例,把面板组件添加到网格中。

    创建Zeng类

    创建一个标签方法获得标题,

    在构造方法中设置组件大小和布局方式,

    创建可推拉面板,增加一个做面板组件和一个右面板组件,

    左面板组件设置为网格包布局,右面板组件设置为流式布局。

    1. import javax.swing.*;
    2. import java.awt.*;
    3. public class Zeng extends JPanel {
    4. public Zeng(){
    5. super();
    6. this.setSize(352,302);
    7. this.setOpaque(false);
    8. this.setLayout(new BorderLayout());
    9. JSplitPane hSplitPane=new JSplitPane();//创建可推拉面板
    10. hSplitPane.setOpaque(false);//面板透明,可以看到背景图片
    11. JPanel leftPanel=new JPanel();//推拉面板的左侧面板
    12. JPanel rightPanel=new JPanel();//推拉面板的右侧面板
    13. leftPanel.setOpaque(false);//面板透明,可以看见背景图片
    14. rightPanel.setOpaque(false);
    15. hSplitPane.setLeftComponent(leftPanel);//推拉面板添加组件
    16. hSplitPane.setRightComponent(rightPanel);
    17. hSplitPane.setOneTouchExpandable(true);//添加一键单击按钮
    18. hSplitPane.setDividerLocation(350);//分隔线距离面板左侧位置
    19. this.add(hSplitPane, BorderLayout.CENTER);
    20. leftPanel.setLayout(new GridBagLayout());
    21. rightPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 50));//右侧面板设置流式布局管理器
    22. }
    23. }

    主类MainFrame增加/修改

    1. private JPanel mainPanel = null;// 面板组件实例化
    2. private Zeng zengPanel = null;// “增”实例化

    创建一个zeng类方法实例化界面的功能

    1. private Zeng getZeng(){//实例化界面的功能
    2. if(zengPanel == null){
    3. zengPanel = new Zeng();//实例化对象
    4. zengPanel.setName("zengPanel");//赋予一个唯一标识
    5. }
    6. return zengPanel;
    7. }

    创建一个面板组件,把功能集中到该面板区域

    布局为卡片布局,实现可切换的效果

    1. private JPanel getMainPanel(){//把功能集中到该面板区域
    2. if(mainPanel == null){
    3. mainPanel = new JPanel();
    4. mainPanel.setOpaque(false);
    5. mainPanel.setLayout(new CardLayout());//卡片布局管理器,可切换
    6. mainPanel.setBorder(BorderFactory.createTitledBorder(//设置显示界面的边界效果
    7. BorderFactory.createEmptyBorder(0, 0, 0, 0),
    8. "功能面板",
    9. TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.ABOVE_TOP,
    10. new Font("sansserif", Font.BOLD, 12),
    11. new Color(59, 59, 59)));
    12. mainPanel.add(getZeng(),getZeng().getName());
    13. }
    14. return mainPanel;
    15. }

    在getBGPanel方法增加,实例化一个网格包3对象,把集中功能面板添加进去。

    1. GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
    2. gridBagConstraints3.gridx = 0;
    3. gridBagConstraints3.gridy = 2;
    4. gridBagConstraints3.gridwidth = 4;
    5. gridBagConstraints3.gridheight = 6;
    6. gridBagConstraints3.insets = new Insets(5,15,10,15);
    7. gridBagConstraints3.fill = GridBagConstraints.BOTH;
    8. bgPanel.add(getMainPanel(),gridBagConstraints3);

    二、在“增加内容”中添加标题

    功能面板组件里还是采用的网格包布局管理器,做个获得标题的标签方法,将此方法添加到网格中。

    Zeng类增加

    1. public JLabel title;
    2. public JLabel getTitle(){
    3. if(title == null){
    4. title = new JLabel("进货记录");
    5. title.setFont(new Font("华文行楷",Font.BOLD,20));
    6. title.setHorizontalAlignment(SwingConstants.CENTER);//设置组件水平对齐方式
    7. title.setHorizontalTextPosition(SwingConstants.CENTER);//设置文字垂直对齐方式
    8. title.setVerticalAlignment(SwingConstants.CENTER);//设置组件垂直对齐方式
    9. title.setVerticalTextPosition(SwingConstants.CENTER);//设置文字垂直对齐方式
    10. }
    11. return title;
    12. }

    构造方法中增加

    1. GridBagConstraints gridBagConstraints17= new GridBagConstraints();
    2. gridBagConstraints17.gridx=0;
    3. gridBagConstraints17.gridy=0;
    4. gridBagConstraints17.gridwidth=2;
    5. gridBagConstraints17.weightx=1.0;
    6. gridBagConstraints17.fill=GridBagConstraints.BOTH;
    7. gridBagConstraints17.insets=new Insets(5, 25, 25, 25);
    8. JLabel label9 = getTitle();
    9. leftPanel.add(label9,gridBagConstraints17);

    三、在“增加内容”中添加输入功能

    一个标签后有一个输入框,每个实现方法相同,看着代码很多,其实是一个方法复制了8次,只需要看其中一个的实现方法即可。

    先定义好实例化对象,

    然后给予每个对象一个方法,在方法体中实现对象的引用,

    最后将每个组件添加到网格中,一个组件一个网格,标签和输入框都是组件。

    Zeng类增加

    1. public JLabel commodityName;//进货名称
    2. public JFormattedTextField field1;//输入框
    3. public JLabel commodityMaker;//进货厂家
    4. public JFormattedTextField field2;//输入框
    5. public JLabel commodityPrice;//进货价格
    6. public JFormattedTextField field3;//输入框
    7. public JLabel commodityMember;//进货数量
    8. public JFormattedTextField field4;//输入框
    9. public JLabel commodityExpense;//进货开销
    10. public JFormattedTextField field5;//输入框
    11. public JLabel surplusMoney;//货款余额
    12. public JFormattedTextField field6;//输入框
    13. public JLabel operatorName;//操作人
    14. public JFormattedTextField field7;//输入框
    15. public JLabel operatorDate;//进货日期
    16. public JFormattedTextField field8;//输入框
    1. public JLabel getCommodityName(){
    2. if(commodityName == null){
    3. commodityName = new JLabel("进货名称");
    4. }
    5. return commodityName;
    6. }
    7. public JFormattedTextField getField1(){
    8. if(field1 == null){
    9. field1 = new JFormattedTextField();
    10. }
    11. return field1;
    12. }
    13. public JLabel getCommodityMaker(){
    14. if(commodityMaker == null){
    15. commodityMaker = new JLabel("进货厂家");
    16. }
    17. return commodityMaker;
    18. }
    19. public JFormattedTextField getField2(){
    20. if(field2 == null){
    21. field2 = new JFormattedTextField();
    22. }
    23. return field2;
    24. }
    25. public JLabel getCommodityPrice(){
    26. if(commodityPrice == null){
    27. commodityPrice = new JLabel("进货价格");
    28. }
    29. return commodityPrice;
    30. }
    31. public JFormattedTextField getField3(){
    32. if(field3 == null){
    33. field3 = new JFormattedTextField();
    34. }
    35. return field3;
    36. }
    37. public JLabel getCommodityMember(){
    38. if(commodityMember==null){
    39. commodityMember=new JLabel("进货数量");
    40. }
    41. return commodityMember;//返回数量标签
    42. }
    43. public JFormattedTextField getField4(){
    44. if(field4==null){
    45. field4=new JFormattedTextField();
    46. }
    47. return field4;//返回数量输入框
    48. }
    49. public JLabel getCommodityExpense(){
    50. if(commodityExpense==null){
    51. commodityExpense=new JLabel("进货开销");
    52. }
    53. return commodityExpense;//返回开销标签
    54. }
    55. public JFormattedTextField getField5(){
    56. if(field5==null){
    57. field5=new JFormattedTextField();
    58. }
    59. return field5;//返回开销输入框
    60. }
    61. public JLabel getSurplusMoney(){
    62. if(surplusMoney==null){
    63. surplusMoney=new JLabel("货款余额");
    64. }
    65. return surplusMoney;//返回余额标签
    66. }
    67. public JFormattedTextField getField6(){
    68. if(field6==null){
    69. field6=new JFormattedTextField();
    70. }
    71. return field6;//返回余额输入框
    72. }
    73. public JLabel getOperatorName(){
    74. if(operatorName==null){
    75. operatorName=new JLabel("经办人");
    76. }
    77. return operatorName;//返回经办人标签
    78. }
    79. public JFormattedTextField getField7(){
    80. if(field7==null){
    81. field7=new JFormattedTextField();
    82. }
    83. return field7;//返回经办人输入框
    84. }
    85. public JLabel getOperatorDate(){
    86. if(operatorDate==null){
    87. operatorDate=new JLabel("进货日期");
    88. }
    89. return operatorDate;//返回日期标签
    90. }
    91. public JFormattedTextField getField8(){
    92. if(field8==null){
    93. field8=new JFormattedTextField();
    94. }
    95. return field8;//返回日期输入框
    96. }

    构造方法增加

    每一组有两个网格包对象,一个用于标签,一个用于输入框,

    设置好他们的位置即可。

    1. GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
    2. gridBagConstraints1.gridx = 0;
    3. gridBagConstraints1.gridy = 1;
    4. gridBagConstraints1.insets = new Insets(0,5,0,0);
    5. JLabel label1 = getCommodityName();
    6. leftPanel.add(label1,gridBagConstraints1);
    7. GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
    8. gridBagConstraints2.gridx = 1;
    9. gridBagConstraints2.gridy = 1;
    10. gridBagConstraints2.insets = new Insets(0,0,0,5);
    11. gridBagConstraints2.weightx = 1.0;
    12. gridBagConstraints2.fill = GridBagConstraints.HORIZONTAL;
    13. JTextField fieldName = getField1();
    14. leftPanel.add(fieldName,gridBagConstraints2);
    15. GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
    16. gridBagConstraints3.gridx = 0;
    17. gridBagConstraints3.gridy = 2;
    18. gridBagConstraints3.insets = new Insets(0,5,0,0);
    19. JLabel label2 = getCommodityMaker();
    20. leftPanel.add(label2,gridBagConstraints3);
    21. GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
    22. gridBagConstraints4.gridx = 1;
    23. gridBagConstraints4.gridy = 2;
    24. gridBagConstraints4.insets = new Insets(0,0,0,5);
    25. gridBagConstraints4.weightx = 1.0;
    26. gridBagConstraints4.fill = GridBagConstraints.HORIZONTAL;
    27. JTextField fieldMaker = getField2();
    28. leftPanel.add(fieldMaker,gridBagConstraints4);
    29. GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
    30. gridBagConstraints5.gridx = 0;
    31. gridBagConstraints5.gridy = 3;
    32. gridBagConstraints5.insets = new Insets(0,5,0,0);
    33. JLabel label3 = getCommodityPrice();
    34. leftPanel.add(label3,gridBagConstraints5);
    35. GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
    36. gridBagConstraints6.gridx = 1;
    37. gridBagConstraints6.gridy = 3;
    38. gridBagConstraints6.insets = new Insets(0,0,0,5);
    39. gridBagConstraints6.fill = GridBagConstraints.HORIZONTAL;
    40. JTextField fieldPrice = getField3();
    41. leftPanel.add(fieldPrice,gridBagConstraints6);
    42. GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
    43. gridBagConstraints7.gridx = 0;
    44. gridBagConstraints7.gridy = 4;
    45. gridBagConstraints7.insets = new Insets(0,5,0,0);
    46. JLabel label4 = getCommodityMember();
    47. leftPanel.add(label4,gridBagConstraints7);
    48. GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
    49. gridBagConstraints8.gridx = 1;
    50. gridBagConstraints8.gridy = 4;
    51. gridBagConstraints8.insets = new Insets(0,0,0,5);
    52. gridBagConstraints8.fill = GridBagConstraints.HORIZONTAL;
    53. JTextField fieldMember = getField4();
    54. leftPanel.add(fieldMember,gridBagConstraints8);
    55. GridBagConstraints gridBagConstraints9= new GridBagConstraints();
    56. gridBagConstraints9.gridx=0;
    57. gridBagConstraints9.gridy=5;
    58. gridBagConstraints9.insets=new Insets(0, 5, 0, 0);
    59. JLabel label5=getCommodityExpense();//调用开销标签
    60. leftPanel.add(label5, gridBagConstraints9);//添加标签
    61. GridBagConstraints gridBagConstraints10= new GridBagConstraints();
    62. gridBagConstraints10.gridx=1;
    63. gridBagConstraints10.gridy=5;
    64. gridBagConstraints10.insets=new Insets(0, 0, 0, 5);
    65. gridBagConstraints10.weightx=1.0;
    66. gridBagConstraints10.fill=GridBagConstraints.HORIZONTAL;
    67. JTextField fieldExpense=getField5();//调用开销输入框
    68. leftPanel.add(fieldExpense, gridBagConstraints10);
    69. GridBagConstraints gridBagConstraints11= new GridBagConstraints();
    70. gridBagConstraints11.gridx=0;
    71. gridBagConstraints11.gridy=6;
    72. gridBagConstraints11.insets=new Insets(0, 5, 0, 0);
    73. JLabel label6=getSurplusMoney();//调用余额标签
    74. leftPanel.add(label6, gridBagConstraints11);//添加标签
    75. GridBagConstraints gridBagConstraints12= new GridBagConstraints();
    76. gridBagConstraints12.gridx=1;
    77. gridBagConstraints12.gridy=6;
    78. gridBagConstraints12.insets=new Insets(0, 0, 0, 5);
    79. gridBagConstraints12.weightx=1.0;
    80. gridBagConstraints12.fill=GridBagConstraints.HORIZONTAL;
    81. JTextField fieldMoney=getField6();//调用余额输入框
    82. leftPanel.add(fieldMoney, gridBagConstraints12);
    83. GridBagConstraints gridBagConstraints13= new GridBagConstraints();
    84. gridBagConstraints13.gridx=0;
    85. gridBagConstraints13.gridy=7;
    86. gridBagConstraints13.insets=new Insets(0, 5, 0, 0);
    87. JLabel label7=getOperatorName();//调用经办人标签
    88. leftPanel.add(label7, gridBagConstraints13);
    89. GridBagConstraints gridBagConstraints14= new GridBagConstraints();
    90. gridBagConstraints14.gridx=1;
    91. gridBagConstraints14.gridy=7;
    92. gridBagConstraints14.insets=new Insets(0, 0, 0, 5);
    93. gridBagConstraints14.weightx=1.0;
    94. gridBagConstraints14.fill=GridBagConstraints.HORIZONTAL;
    95. JTextField fieldOperator=getField7();//调用经办人输入框
    96. leftPanel.add(fieldOperator, gridBagConstraints14);
    97. GridBagConstraints gridBagConstraints15= new GridBagConstraints();
    98. gridBagConstraints15.gridx=0;
    99. gridBagConstraints15.gridy=8;
    100. gridBagConstraints15.insets=new Insets(0, 5, 5, 0);
    101. JLabel label8=getOperatorDate();//调用经办日期标签
    102. leftPanel.add(label8, gridBagConstraints15);
    103. GridBagConstraints gridBagConstraints16= new GridBagConstraints();
    104. gridBagConstraints16.gridx=1;
    105. gridBagConstraints16.gridy=8;
    106. gridBagConstraints16.insets=new Insets(0, 0, 5, 5);
    107. gridBagConstraints16.weightx=1.0;
    108. gridBagConstraints16.fill=GridBagConstraints.HORIZONTAL;
    109. JTextField fieldDate=getField8();//调用经办日期输入框
    110. leftPanel.add(fieldDate, gridBagConstraints16);

     四、在“增加内容”中增加“进货”“清空”按钮

    创建按钮,设置好按钮的样式,直接添加到右侧面板中,布局方式默认为流式布局。

    Zeng类增加

    构造方法增加

    1. JButton button1 = new JButton("进货");//设置右侧面板点击按钮
    2. button1.setFont(new Font("华文行楷",Font.BOLD,20));
    3. button1.setOpaque(false);
    4. button1.setBorderPainted(false);//按钮去除边界效果
    5. button1.setContentAreaFilled(false);//去除填充效果
    6. button1.setFocusPainted(false);//去除焦点效果
    7. rightPanel.add(button1);
    8. JButton button2 = new JButton("清空");//设置右侧面板清空按钮
    9. button2.setFont(new Font("华文行楷", Font.BOLD, 20));
    10. button2.setOpaque(false);
    11. button2.setBorderPainted(false);
    12. button2.setContentAreaFilled(false);
    13. button2.setFocusPainted(false);
    14. rightPanel.add(button2);

     

    简易超市管理系统的基本页面已经雏形,下一文章增加“写入文件”和“进货”“清空”的功能。

  • 相关阅读:
    【Qt炫酷动画】2.QAbstractAnimation抽象动画类
    多维时序 | MATLAB实现TCN-selfAttention自注意力机制结合时间卷积神经网络多变量时间序列预测
    laravel引入element-ui后,blade模板中使用elementui时,事件未生效问题(下载element-ui到本地直接引入项目)
    【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)
    牛客[NOIP2016]蚯蚓
    MySQLBackup备份数据库
    python函数运行加速
    css_23_多列布局
    CTF Misc(3)流量分析基础以及原理
    redis深度历险 1 - Redis基础数据结构-001
  • 原文地址:https://blog.csdn.net/Tir_zhang/article/details/125410685