2

我正在一个项目中工作,我有一个主类(mdiform)来管理我的所有类。我用 JInternalFrame 创建了一个类PurchaseMaster,我想通过一些选项卡显示它。

我做了这样的代码:

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class PurchaseMaster extends JInternalFrame implements ActionListener
{
    JTabbedPane tabbedPane;
    JPanel panel1;//,panel2;
    JOptionPane op;
    mdiform m;
    PurchaseMaster p;
    JLabel lblrtmt,lblsale,lblform,lblto,lblmaterial,lblload,lblpaid,lbldeposit,lblbalance,lbldlname,lblpur,lblinvoice,lbldate,lblparty,lbltrucktype,lbltruckno,lblitem,lblqty,lblrate;
        JButton btnreset,btnsave,btncancel,btnprint;
        JTextField txtfrom,txtto,txtload,txtdeposit,txtpaid,txtbal,txtdl,txtcalu,txtinvoice,txtslip,txtparty,txttruckno,txtrate;
        JComboBox cmaterial,ctrucktype,citem,cqty;
        String type[]={"SLC","Self"};
        String qty[]={"Trip","Weight"};
        String tno[]={"Coal","Steel","Wood","Rakhad","Iron"};
        String[] material={"1","2","3"};

    public PurchaseMaster(mdiform m)
    {
        super("Puchase",false,true,false,true);   
        setBounds(m.getWidth()/2-300,m.getHeight()/2-200,600,400); 
        //setBounds(400,600);
        setLayout(null);

        this.m=m; 

        JPanel topPanel = new JPanel();
        topPanel.setLayout( new BorderLayout() );


        // Create the tab pages
        createPage1();
        //createPage2();

        // Create a tabbed pane
        tabbedPane = new JTabbedPane();
        tabbedPane.addTab( "ADD", panel1 );
        //tabbedPane.addTab( "View", panel2 );
        topPanel.add( tabbedPane, BorderLayout.CENTER );
        add( topPanel );
        this.pack();
        op=new JOptionPane();

            setVisible(true);
        setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);

        try{
            m.ConnectDB();
        m.msgbox("Work");
        m.rs=m.st.executeQuery("Select max(invno)+1 from bricks");
        if(m.rs.next())
        {
            txtinvoice.setText(""+m.rs.getInt(1));
        }   
            m.msgbox("First User ......");
            txtinvoice.setText("101");

        }
        catch(Exception e){}    
    }   



        public void createPage1()
        {
        panel1 = new JPanel();
        panel1.setLayout( null );

        lblpur=new JLabel("Purchase");
        lblpur.setFont(new Font("Times new roman",Font.BOLD,24));
        lblpur.setForeground(new Color(100,149,23));
        lblpur.setBounds(250,20,200,50);
        panel1.add(lblpur);

        lblinvoice =new JLabel("Invoice No. : ");
        lbldate =new JLabel("Date : ");
        lblparty =new JLabel("Party Name : ");
        lbltruckno =new JLabel("Truck No. : ");
        lbltrucktype =new JLabel("Truck type : ");
        lblitem =new JLabel("Invoice No. : ");
        lblqty =new JLabel("Qty in : ");
        lblrate =new JLabel("Rate : ");
        txtcalu=new JTextField();
        txtinvoice=new JTextField();
        txtparty=new JTextField();
        txtrate=new JTextField();
        txttruckno=new JTextField();
        citem=new JComboBox(type);
        cqty=new JComboBox(qty);
        ctrucktype=new JComboBox(tno);
        btncancel=new JButton("Cancel");
        btnprint=new JButton("Print");
        btnreset=new JButton("Reset");
        btnsave=new JButton("Save");

        lblinvoice.setBounds(50,100,80,25);
        txtinvoice.setBounds(140,100,50,25);
        lbldate.setBounds(440,100,80,25);
        lblparty.setBounds(50,135,80,25);
        txtparty.setBounds(140,135,400,25);
        lbltrucktype.setBounds(50,170,80,25);
        ctrucktype.setBounds(140,170,100,25);
        lbltruckno.setBounds(350,170,80,25);
        txttruckno.setBounds(450,170,100,25);
        lblitem.setBounds(50,205,80,25);
        citem.setBounds(140,205,100,25);
        lblqty.setBounds(260,240,80,25);
        cqty.setBounds(350,240,80,25);
        txtcalu.setBounds(440,240,80,25);
        lblrate.setBounds(260,275,80,25);
        txtrate.setBounds(350,275,80,25);
        btnreset.setBounds(50,310,100,25);
        btnsave.setBounds(160,310,100,25);
        btnprint.setBounds(270,310,100,25);
        btncancel.setBounds(380,310,100,25);


        panel1.add(lblinvoice);     panel1.add(lbldate);
        panel1.add(lblparty);panel1.add(lbltruckno);panel1.add(lbltrucktype);panel1.add(lblitem);   panel1.add(lblqty);panel1.add(lblrate); panel1.add(btncancel);panel1.add(btnprint); panel1.add(btnreset);  panel1.add(citem); panel1.add(cqty);  panel1.add(ctrucktype);panel1.add(btnsave);  panel1.add(txtcalu);panel1.add(txtinvoice);panel1.add(txtparty);panel1.add(txtrate);  panel1.add(txtslip);    panel1.add(txttruckno);
        panel1.add(lblpur);

        }


    public void actionPerformed(ActionEvent ae)
    {

    }

}

其中 m 是主类的对象(mdiform)。

它编译但是当我单击子菜单购买时,除了在交易菜单中之外,它给了我错误。

在此处输入图像描述

我的堆栈跟踪是:

H:\Workspace\Mining Inventory\Project\src>java mdiform
java.lang.NullPointerException
        at java.awt.Container.addImpl(Container.java:1090)
        at java.awt.Container.add(Container.java:410)
        at PurchaseMaster.createPage1(PurchaseMaster.java:127)
        at PurchaseMaster.<init>(PurchaseMaster.java:40)
        at mdiform.actionPerformed(mdiform.java:134)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:20
18)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259
)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:8
33)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMen
uItemUI.java:877)
        at java.awt.Component.processMouseEvent(Component.java:6504)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
        at java.awt.Component.processEvent(Component.java:6269)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4860)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4686)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832
)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2713)
        at java.awt.Component.dispatchEvent(Component.java:4686)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
        at java.awt.EventQueue.access$000(EventQueue.java:101)
        at java.awt.EventQueue$3.run(EventQueue.java:666)
        at java.awt.EventQueue$3.run(EventQueue.java:664)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:680)
        at java.awt.EventQueue$4.run(EventQueue.java:678)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:211)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:128)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:117)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

它的工作,但它没有最大化。在此处输入图像描述

4

1 回答 1

3

每条物理线一行代码将大大有助于解决这类问题。

话虽如此,您的错误是在开始的非常长的一行中:

panel1.add(lblparty);panel1.add(...

您正在向面板中添加一个从未初始化的组件。在这种情况下,它是您的txtslip组件。可能还有其他人。

于 2013-10-15T17:37:16.177 回答