前面已经完成了界面标题和四个按钮,
现在开始完成“增加内容”按钮的具体功能。
创建一个增类,实现增类的功能;
然后创建面板组件,把类添加到面板组件中,
因为使用网格包布局,所以创建一个实例,把面板组件添加到网格中。
创建一个标签方法获得标题,
在构造方法中设置组件大小和布局方式,
创建可推拉面板,增加一个做面板组件和一个右面板组件,
左面板组件设置为网格包布局,右面板组件设置为流式布局。
- import javax.swing.*;
- import java.awt.*;
-
- public class Zeng extends JPanel {
-
- public Zeng(){
- super();
- this.setSize(352,302);
- this.setOpaque(false);
- this.setLayout(new BorderLayout());
-
- JSplitPane hSplitPane=new JSplitPane();//创建可推拉面板
- hSplitPane.setOpaque(false);//面板透明,可以看到背景图片
- JPanel leftPanel=new JPanel();//推拉面板的左侧面板
- JPanel rightPanel=new JPanel();//推拉面板的右侧面板
- leftPanel.setOpaque(false);//面板透明,可以看见背景图片
- rightPanel.setOpaque(false);
- hSplitPane.setLeftComponent(leftPanel);//推拉面板添加组件
- hSplitPane.setRightComponent(rightPanel);
- hSplitPane.setOneTouchExpandable(true);//添加一键单击按钮
- hSplitPane.setDividerLocation(350);//分隔线距离面板左侧位置
- this.add(hSplitPane, BorderLayout.CENTER);
- leftPanel.setLayout(new GridBagLayout());
- rightPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 50));//右侧面板设置流式布局管理器
-
- }
- }
- private JPanel mainPanel = null;// 面板组件实例化
- private Zeng zengPanel = null;// “增”实例化
创建一个zeng类方法实例化界面的功能
- private Zeng getZeng(){//实例化界面的功能
- if(zengPanel == null){
- zengPanel = new Zeng();//实例化对象
- zengPanel.setName("zengPanel");//赋予一个唯一标识
- }
- return zengPanel;
- }
创建一个面板组件,把功能集中到该面板区域
布局为卡片布局,实现可切换的效果
- private JPanel getMainPanel(){//把功能集中到该面板区域
- if(mainPanel == null){
- mainPanel = new JPanel();
- mainPanel.setOpaque(false);
- mainPanel.setLayout(new CardLayout());//卡片布局管理器,可切换
- mainPanel.setBorder(BorderFactory.createTitledBorder(//设置显示界面的边界效果
- BorderFactory.createEmptyBorder(0, 0, 0, 0),
- "功能面板",
- TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.ABOVE_TOP,
- new Font("sansserif", Font.BOLD, 12),
- new Color(59, 59, 59)));
- mainPanel.add(getZeng(),getZeng().getName());
- }
- return mainPanel;
- }
在getBGPanel方法增加,实例化一个网格包3对象,把集中功能面板添加进去。
- GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
- gridBagConstraints3.gridx = 0;
- gridBagConstraints3.gridy = 2;
- gridBagConstraints3.gridwidth = 4;
- gridBagConstraints3.gridheight = 6;
- gridBagConstraints3.insets = new Insets(5,15,10,15);
- gridBagConstraints3.fill = GridBagConstraints.BOTH;
- bgPanel.add(getMainPanel(),gridBagConstraints3);

功能面板组件里还是采用的网格包布局管理器,做个获得标题的标签方法,将此方法添加到网格中。
- public JLabel title;
-
- public JLabel getTitle(){
- if(title == null){
- title = new JLabel("进货记录");
- title.setFont(new Font("华文行楷",Font.BOLD,20));
- title.setHorizontalAlignment(SwingConstants.CENTER);//设置组件水平对齐方式
- title.setHorizontalTextPosition(SwingConstants.CENTER);//设置文字垂直对齐方式
- title.setVerticalAlignment(SwingConstants.CENTER);//设置组件垂直对齐方式
- title.setVerticalTextPosition(SwingConstants.CENTER);//设置文字垂直对齐方式
- }
- return title;
- }
构造方法中增加
- GridBagConstraints gridBagConstraints17= new GridBagConstraints();
- gridBagConstraints17.gridx=0;
- gridBagConstraints17.gridy=0;
- gridBagConstraints17.gridwidth=2;
- gridBagConstraints17.weightx=1.0;
- gridBagConstraints17.fill=GridBagConstraints.BOTH;
- gridBagConstraints17.insets=new Insets(5, 25, 25, 25);
-
- JLabel label9 = getTitle();
- leftPanel.add(label9,gridBagConstraints17);
一个标签后有一个输入框,每个实现方法相同,看着代码很多,其实是一个方法复制了8次,只需要看其中一个的实现方法即可。
先定义好实例化对象,
然后给予每个对象一个方法,在方法体中实现对象的引用,
最后将每个组件添加到网格中,一个组件一个网格,标签和输入框都是组件。
- public JLabel commodityName;//进货名称
- public JFormattedTextField field1;//输入框
- public JLabel commodityMaker;//进货厂家
- public JFormattedTextField field2;//输入框
- public JLabel commodityPrice;//进货价格
- public JFormattedTextField field3;//输入框
- public JLabel commodityMember;//进货数量
- public JFormattedTextField field4;//输入框
- public JLabel commodityExpense;//进货开销
- public JFormattedTextField field5;//输入框
- public JLabel surplusMoney;//货款余额
- public JFormattedTextField field6;//输入框
- public JLabel operatorName;//操作人
- public JFormattedTextField field7;//输入框
- public JLabel operatorDate;//进货日期
- public JFormattedTextField field8;//输入框
- public JLabel getCommodityName(){
- if(commodityName == null){
- commodityName = new JLabel("进货名称");
- }
- return commodityName;
- }
- public JFormattedTextField getField1(){
- if(field1 == null){
- field1 = new JFormattedTextField();
- }
- return field1;
- }
- public JLabel getCommodityMaker(){
- if(commodityMaker == null){
- commodityMaker = new JLabel("进货厂家");
- }
- return commodityMaker;
- }
- public JFormattedTextField getField2(){
- if(field2 == null){
- field2 = new JFormattedTextField();
- }
- return field2;
- }
- public JLabel getCommodityPrice(){
- if(commodityPrice == null){
- commodityPrice = new JLabel("进货价格");
- }
- return commodityPrice;
- }
- public JFormattedTextField getField3(){
- if(field3 == null){
- field3 = new JFormattedTextField();
- }
- return field3;
- }
- public JLabel getCommodityMember(){
- if(commodityMember==null){
- commodityMember=new JLabel("进货数量");
- }
- return commodityMember;//返回数量标签
- }
- public JFormattedTextField getField4(){
- if(field4==null){
- field4=new JFormattedTextField();
- }
- return field4;//返回数量输入框
- }
- public JLabel getCommodityExpense(){
- if(commodityExpense==null){
- commodityExpense=new JLabel("进货开销");
- }
- return commodityExpense;//返回开销标签
- }
- public JFormattedTextField getField5(){
- if(field5==null){
- field5=new JFormattedTextField();
- }
- return field5;//返回开销输入框
- }
- public JLabel getSurplusMoney(){
- if(surplusMoney==null){
- surplusMoney=new JLabel("货款余额");
- }
- return surplusMoney;//返回余额标签
- }
- public JFormattedTextField getField6(){
- if(field6==null){
- field6=new JFormattedTextField();
- }
- return field6;//返回余额输入框
- }
- public JLabel getOperatorName(){
- if(operatorName==null){
- operatorName=new JLabel("经办人");
- }
- return operatorName;//返回经办人标签
- }
- public JFormattedTextField getField7(){
- if(field7==null){
- field7=new JFormattedTextField();
- }
- return field7;//返回经办人输入框
- }
- public JLabel getOperatorDate(){
- if(operatorDate==null){
- operatorDate=new JLabel("进货日期");
- }
- return operatorDate;//返回日期标签
- }
- public JFormattedTextField getField8(){
- if(field8==null){
- field8=new JFormattedTextField();
- }
- return field8;//返回日期输入框
- }
构造方法增加
每一组有两个网格包对象,一个用于标签,一个用于输入框,
设置好他们的位置即可。
- GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
- gridBagConstraints1.gridx = 0;
- gridBagConstraints1.gridy = 1;
- gridBagConstraints1.insets = new Insets(0,5,0,0);
- JLabel label1 = getCommodityName();
- leftPanel.add(label1,gridBagConstraints1);
- GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
- gridBagConstraints2.gridx = 1;
- gridBagConstraints2.gridy = 1;
- gridBagConstraints2.insets = new Insets(0,0,0,5);
- gridBagConstraints2.weightx = 1.0;
- gridBagConstraints2.fill = GridBagConstraints.HORIZONTAL;
- JTextField fieldName = getField1();
- leftPanel.add(fieldName,gridBagConstraints2);
-
- GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
- gridBagConstraints3.gridx = 0;
- gridBagConstraints3.gridy = 2;
- gridBagConstraints3.insets = new Insets(0,5,0,0);
- JLabel label2 = getCommodityMaker();
- leftPanel.add(label2,gridBagConstraints3);
- GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
- gridBagConstraints4.gridx = 1;
- gridBagConstraints4.gridy = 2;
- gridBagConstraints4.insets = new Insets(0,0,0,5);
- gridBagConstraints4.weightx = 1.0;
- gridBagConstraints4.fill = GridBagConstraints.HORIZONTAL;
- JTextField fieldMaker = getField2();
- leftPanel.add(fieldMaker,gridBagConstraints4);
-
- GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
- gridBagConstraints5.gridx = 0;
- gridBagConstraints5.gridy = 3;
- gridBagConstraints5.insets = new Insets(0,5,0,0);
- JLabel label3 = getCommodityPrice();
- leftPanel.add(label3,gridBagConstraints5);
- GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
- gridBagConstraints6.gridx = 1;
- gridBagConstraints6.gridy = 3;
- gridBagConstraints6.insets = new Insets(0,0,0,5);
- gridBagConstraints6.fill = GridBagConstraints.HORIZONTAL;
- JTextField fieldPrice = getField3();
- leftPanel.add(fieldPrice,gridBagConstraints6);
-
- GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
- gridBagConstraints7.gridx = 0;
- gridBagConstraints7.gridy = 4;
- gridBagConstraints7.insets = new Insets(0,5,0,0);
- JLabel label4 = getCommodityMember();
- leftPanel.add(label4,gridBagConstraints7);
- GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
- gridBagConstraints8.gridx = 1;
- gridBagConstraints8.gridy = 4;
- gridBagConstraints8.insets = new Insets(0,0,0,5);
- gridBagConstraints8.fill = GridBagConstraints.HORIZONTAL;
- JTextField fieldMember = getField4();
- leftPanel.add(fieldMember,gridBagConstraints8);
-
- GridBagConstraints gridBagConstraints9= new GridBagConstraints();
- gridBagConstraints9.gridx=0;
- gridBagConstraints9.gridy=5;
- gridBagConstraints9.insets=new Insets(0, 5, 0, 0);
- JLabel label5=getCommodityExpense();//调用开销标签
- leftPanel.add(label5, gridBagConstraints9);//添加标签
- GridBagConstraints gridBagConstraints10= new GridBagConstraints();
- gridBagConstraints10.gridx=1;
- gridBagConstraints10.gridy=5;
- gridBagConstraints10.insets=new Insets(0, 0, 0, 5);
- gridBagConstraints10.weightx=1.0;
- gridBagConstraints10.fill=GridBagConstraints.HORIZONTAL;
- JTextField fieldExpense=getField5();//调用开销输入框
- leftPanel.add(fieldExpense, gridBagConstraints10);
-
- GridBagConstraints gridBagConstraints11= new GridBagConstraints();
- gridBagConstraints11.gridx=0;
- gridBagConstraints11.gridy=6;
- gridBagConstraints11.insets=new Insets(0, 5, 0, 0);
- JLabel label6=getSurplusMoney();//调用余额标签
- leftPanel.add(label6, gridBagConstraints11);//添加标签
- GridBagConstraints gridBagConstraints12= new GridBagConstraints();
- gridBagConstraints12.gridx=1;
- gridBagConstraints12.gridy=6;
- gridBagConstraints12.insets=new Insets(0, 0, 0, 5);
- gridBagConstraints12.weightx=1.0;
- gridBagConstraints12.fill=GridBagConstraints.HORIZONTAL;
- JTextField fieldMoney=getField6();//调用余额输入框
- leftPanel.add(fieldMoney, gridBagConstraints12);
-
- GridBagConstraints gridBagConstraints13= new GridBagConstraints();
- gridBagConstraints13.gridx=0;
- gridBagConstraints13.gridy=7;
- gridBagConstraints13.insets=new Insets(0, 5, 0, 0);
- JLabel label7=getOperatorName();//调用经办人标签
- leftPanel.add(label7, gridBagConstraints13);
- GridBagConstraints gridBagConstraints14= new GridBagConstraints();
- gridBagConstraints14.gridx=1;
- gridBagConstraints14.gridy=7;
- gridBagConstraints14.insets=new Insets(0, 0, 0, 5);
- gridBagConstraints14.weightx=1.0;
- gridBagConstraints14.fill=GridBagConstraints.HORIZONTAL;
- JTextField fieldOperator=getField7();//调用经办人输入框
- leftPanel.add(fieldOperator, gridBagConstraints14);
-
- GridBagConstraints gridBagConstraints15= new GridBagConstraints();
- gridBagConstraints15.gridx=0;
- gridBagConstraints15.gridy=8;
- gridBagConstraints15.insets=new Insets(0, 5, 5, 0);
- JLabel label8=getOperatorDate();//调用经办日期标签
- leftPanel.add(label8, gridBagConstraints15);
- GridBagConstraints gridBagConstraints16= new GridBagConstraints();
- gridBagConstraints16.gridx=1;
- gridBagConstraints16.gridy=8;
- gridBagConstraints16.insets=new Insets(0, 0, 5, 5);
- gridBagConstraints16.weightx=1.0;
- gridBagConstraints16.fill=GridBagConstraints.HORIZONTAL;
- JTextField fieldDate=getField8();//调用经办日期输入框
- leftPanel.add(fieldDate, gridBagConstraints16);

创建按钮,设置好按钮的样式,直接添加到右侧面板中,布局方式默认为流式布局。
构造方法增加
- JButton button1 = new JButton("进货");//设置右侧面板点击按钮
- button1.setFont(new Font("华文行楷",Font.BOLD,20));
- button1.setOpaque(false);
- button1.setBorderPainted(false);//按钮去除边界效果
- button1.setContentAreaFilled(false);//去除填充效果
- button1.setFocusPainted(false);//去除焦点效果
- rightPanel.add(button1);
-
- JButton button2 = new JButton("清空");//设置右侧面板清空按钮
- button2.setFont(new Font("华文行楷", Font.BOLD, 20));
- button2.setOpaque(false);
- button2.setBorderPainted(false);
- button2.setContentAreaFilled(false);
- button2.setFocusPainted(false);
- rightPanel.add(button2);

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