Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向JTable添加列时出现NullPointerException_Java_Nullpointerexception_Jtable - Fatal编程技术网

Java 向JTable添加列时出现NullPointerException

Java 向JTable添加列时出现NullPointerException,java,nullpointerexception,jtable,Java,Nullpointerexception,Jtable,我正在编写一个程序,在输入医生编号(FHIR HAPI)时显示患者记录,但这不是重点。我想显示基本的患者详细信息,然后通过一个复选框,允许用户向JTable添加一个额外的列来显示他们的详细信息 根据复选框的状态,可以添加和删除此额外列。但是,当我尝试使用我的DefaultTableModel变量执行model.addColumn()方法时,我总是得到一个NullPointer异常 最后一种方法是产生问题的方法。我还为调用的其他方法提供了代码。我曾尝试对值甚至数组列表使用各种类型的数组(对象和字符

我正在编写一个程序,在输入医生编号(FHIR HAPI)时显示患者记录,但这不是重点。我想显示基本的患者详细信息,然后通过一个复选框,允许用户向JTable添加一个额外的列来显示他们的详细信息

根据复选框的状态,可以添加和删除此额外列。但是,当我尝试使用我的
DefaultTableModel
变量执行
model.addColumn()
方法时,我总是得到一个
NullPointer
异常

最后一种方法是产生问题的方法。我还为调用的其他方法提供了代码。我曾尝试对值甚至数组列表使用各种类型的数组(对象和字符串)。您还将看到,在我为方法
getAllPatientToServationValues()
编写的第二段代码中,我执行了一个println,以查看它是否进入该方法,而不是。任何帮助都将不胜感激

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionListener;
import java.text.ParseException;

public class GUIManager extends JFrame{

    private Operations op;

    private JPanel pnPnlMain;

    private JPanel pnPnlTop;
    private JCheckBox cbChkCholesterol;

    private JPanel pnPnlMiddle;
    private JTable tblLeft;
    private DefaultTableModel tblLeftModel;
    private JTable tblRight;
    private DefaultTableModel tblRightModel;
    private JButton btBtnAdd;
    private JButton btBtnRemove;

    private JPanel pnPnlBottom;
    private JButton btBtnExit;
    private JLabel lbLblTime;
    private JTextField tfTxtSeconds;
    private JLabel lbLblThreshhold;
    private JTextField tfTxtThreshold;

    public GUIManager(Operations inOP)
    {
        setSize(1000, 650);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("FHIR Patient Monitor");

        pnPnlMain = new JPanel();
        pnPnlMain.setBorder( BorderFactory.createTitledBorder( "FHIR" ) );
        GridBagLayout gbPnlMain = new GridBagLayout();
        GridBagConstraints gbcPnlMain = new GridBagConstraints();
        pnPnlMain.setLayout( gbPnlMain );

        pnPnlTop = new JPanel();
        pnPnlTop.setBorder( BorderFactory.createTitledBorder( "Column Details" ) );
        GridBagLayout gbPnlTop = new GridBagLayout();
        GridBagConstraints gbcPnlTop = new GridBagConstraints();
        pnPnlTop.setLayout( gbPnlTop );

        cbChkCholesterol = new JCheckBox( "Cholesterol");
        gbcPnlTop.gridx = 2;
        gbcPnlTop.gridy = 1;
        gbcPnlTop.gridwidth = 6;
        gbcPnlTop.gridheight = 1;
        gbcPnlTop.fill = GridBagConstraints.BOTH;
        gbcPnlTop.weightx = 1;
        gbcPnlTop.weighty = 0;
        gbcPnlTop.anchor = GridBagConstraints.NORTH;
        gbPnlTop.setConstraints( cbChkCholesterol, gbcPnlTop );
        pnPnlTop.add( cbChkCholesterol );
        gbcPnlMain.gridx = 0;
        gbcPnlMain.gridy = 0;
        gbcPnlMain.gridwidth = 20;
        gbcPnlMain.gridheight = 4;
        gbcPnlMain.fill = GridBagConstraints.BOTH;
        gbcPnlMain.weightx = 1;
        gbcPnlMain.weighty = 0;
        gbcPnlMain.anchor = GridBagConstraints.NORTH;
        gbPnlMain.setConstraints( pnPnlTop, gbcPnlMain );
        pnPnlMain.add( pnPnlTop );

        pnPnlMiddle = new JPanel();
        pnPnlMiddle.setBorder( BorderFactory.createTitledBorder( "Tables" ) );
        GridBagLayout gbPnlMiddle = new GridBagLayout();
        GridBagConstraints gbcPnlMiddle = new GridBagConstraints();
        pnPnlMiddle.setLayout( gbPnlMiddle );

        String [][]dataTblLeft = new String[1][2];
        String []colsTblLeft = new String[] { "ID", "Full Name" };
        tblLeftModel = new DefaultTableModel(dataTblLeft, colsTblLeft);
        tblLeft = new JTable(tblLeftModel);
        tblLeftModel.removeRow(0);
        JScrollPane scpLeftTable = new JScrollPane(tblLeft);
        scpLeftTable.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        scpLeftTable.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        gbcPnlMiddle.gridx = 0;
        gbcPnlMiddle.gridy = 0;
        gbcPnlMiddle.gridwidth = 9;
        gbcPnlMiddle.gridheight = 12;
        gbcPnlMiddle.fill = GridBagConstraints.NONE;
        gbcPnlMiddle.weightx = 1;
        gbcPnlMiddle.weighty = 1;
        gbcPnlMiddle.anchor = GridBagConstraints.CENTER;
        gbPnlMiddle.setConstraints( scpLeftTable, gbcPnlMiddle );
        pnPnlMiddle.add(scpLeftTable);

        String [][]dataTblRight = new String[1][7] ;
        String []colsTblRight = new String[] { "ID", "Full Name", "Birthdate","Gender","City","State","Country"};
        tblRightModel = new DefaultTableModel(dataTblRight, colsTblRight);
        tblRight = new JTable(tblRightModel);
        tblRight.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        tblRightModel.removeRow(0);
        JScrollPane scpRightTable = new JScrollPane(tblRight);
        scpRightTable.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        scpRightTable.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        gbcPnlMiddle.gridx = 10;
        gbcPnlMiddle.gridy = 0;
        gbcPnlMiddle.gridwidth = 9;
        gbcPnlMiddle.gridheight = 12;
        gbcPnlMiddle.fill = GridBagConstraints.NONE;
        gbcPnlMiddle.weightx = 1;
        gbcPnlMiddle.weighty = 1;
        gbcPnlMiddle.anchor = GridBagConstraints.CENTER;
        gbPnlMiddle.setConstraints( scpRightTable, gbcPnlMiddle );
        pnPnlMiddle.add( scpRightTable );

        btBtnAdd = new JButton( "Add"  );
        gbcPnlMiddle.gridx = 2;
        gbcPnlMiddle.gridy = 12;
        gbcPnlMiddle.gridwidth = 5;
        gbcPnlMiddle.gridheight = 2;
        gbcPnlMiddle.fill = GridBagConstraints.NONE;
        gbcPnlMiddle.weightx = 1;
        gbcPnlMiddle.weighty = 0;
        gbcPnlMiddle.anchor = GridBagConstraints.NORTH;
        gbPnlMiddle.setConstraints( btBtnAdd, gbcPnlMiddle );
        pnPnlMiddle.add( btBtnAdd );

        btBtnRemove = new JButton( "Remove"  );
        gbcPnlMiddle.gridx = 12;
        gbcPnlMiddle.gridy = 12;
        gbcPnlMiddle.gridwidth = 5;
        gbcPnlMiddle.gridheight = 2;
        gbcPnlMiddle.fill = GridBagConstraints.NONE;
        gbcPnlMiddle.weightx = 1;
        gbcPnlMiddle.weighty = 0;
        gbcPnlMiddle.anchor = GridBagConstraints.NORTH;
        gbPnlMiddle.setConstraints( btBtnRemove, gbcPnlMiddle );
        pnPnlMiddle.add( btBtnRemove );
        gbcPnlMain.gridx = 0;
        gbcPnlMain.gridy = 4;
        gbcPnlMain.gridwidth = 20;
        gbcPnlMain.gridheight = 15;
        gbcPnlMain.fill = GridBagConstraints.BOTH;
        gbcPnlMain.weightx = 1;
        gbcPnlMain.weighty = 0;
        gbcPnlMain.anchor = GridBagConstraints.NORTH;
        gbPnlMain.setConstraints( pnPnlMiddle, gbcPnlMain );
        pnPnlMain.add( pnPnlMiddle );

        pnPnlBottom = new JPanel();
        GridBagLayout gbPnlBottom = new GridBagLayout();
        GridBagConstraints gbcPnlBottom = new GridBagConstraints();
        pnPnlBottom.setLayout( gbPnlBottom );

        btBtnExit = new JButton( "Exit"  );
        gbcPnlBottom.gridx = 16;
        gbcPnlBottom.gridy = 0;
        gbcPnlBottom.gridwidth = 4;
        gbcPnlBottom.gridheight = 2;
        gbcPnlBottom.fill = GridBagConstraints.NONE;
        gbcPnlBottom.weightx = 1;
        gbcPnlBottom.weighty = 0;
        gbcPnlBottom.anchor = GridBagConstraints.EAST;
        gbPnlBottom.setConstraints( btBtnExit, gbcPnlBottom );
        pnPnlBottom.add( btBtnExit );

        lbLblTime = new JLabel( "Refresh Rate:"  );
        gbcPnlBottom.gridx = 0;
        gbcPnlBottom.gridy = 0;
        gbcPnlBottom.gridwidth = 6;
        gbcPnlBottom.gridheight = 1;
        gbcPnlBottom.fill = GridBagConstraints.BOTH;
        gbcPnlBottom.weightx = 1;
        gbcPnlBottom.weighty = 1;
        gbcPnlBottom.anchor = GridBagConstraints.NORTH;
        gbPnlBottom.setConstraints( lbLblTime, gbcPnlBottom );
        pnPnlBottom.add( lbLblTime );

        tfTxtSeconds = new JTextField( );
        gbcPnlBottom.gridx = 6;
        gbcPnlBottom.gridy = 0;
        gbcPnlBottom.gridwidth = 8;
        gbcPnlBottom.gridheight = 1;
        gbcPnlBottom.fill = GridBagConstraints.BOTH;
        gbcPnlBottom.weightx = 1;
        gbcPnlBottom.weighty = 0;
        gbcPnlBottom.anchor = GridBagConstraints.WEST;
        gbPnlBottom.setConstraints( tfTxtSeconds, gbcPnlBottom );
        pnPnlBottom.add( tfTxtSeconds );

        lbLblThreshhold = new JLabel( "Threshold:"  );
        gbcPnlBottom.gridx = 0;
        gbcPnlBottom.gridy = 1;
        gbcPnlBottom.gridwidth = 6;
        gbcPnlBottom.gridheight = 1;
        gbcPnlBottom.fill = GridBagConstraints.BOTH;
        gbcPnlBottom.weightx = 1;
        gbcPnlBottom.weighty = 1;
        gbcPnlBottom.anchor = GridBagConstraints.NORTH;
        gbPnlBottom.setConstraints( lbLblThreshhold, gbcPnlBottom );
        pnPnlBottom.add( lbLblThreshhold );

        tfTxtThreshold = new JTextField( );
        gbcPnlBottom.gridx = 6;
        gbcPnlBottom.gridy = 1;
        gbcPnlBottom.gridwidth = 8;
        gbcPnlBottom.gridheight = 1;
        gbcPnlBottom.fill = GridBagConstraints.BOTH;
        gbcPnlBottom.weightx = 1;
        gbcPnlBottom.weighty = 0;
        gbcPnlBottom.anchor = GridBagConstraints.NORTH;
        gbPnlBottom.setConstraints( tfTxtThreshold, gbcPnlBottom );
        pnPnlBottom.add( tfTxtThreshold );
        gbcPnlMain.gridx = 0;
        gbcPnlMain.gridy = 19;
        gbcPnlMain.gridwidth = 20;
        gbcPnlMain.gridheight = 2;
        gbcPnlMain.fill = GridBagConstraints.BOTH;
        gbcPnlMain.weightx = 1;
        gbcPnlMain.weighty = 0;
        gbcPnlMain.anchor = GridBagConstraints.NORTH;
        gbPnlMain.setConstraints( pnPnlBottom, gbcPnlMain );
        pnPnlMain.add( pnPnlBottom );

        getContentPane().add(pnPnlMain);
    }

    public void addExitListener(ActionListener listen)
    {
        btBtnExit.addActionListener(listen);
    }

    public void addAddListener(ActionListener listen)
    {
        btBtnAdd.addActionListener(listen);
    }

    public void addRemoveListener(ActionListener listen)
    {
        btBtnRemove.addActionListener(listen);
    }

    public void addCholesterolListener(ActionListener listen) { cbChkCholesterol.addActionListener(listen);}

    public JCheckBox getChkCholesterol() { return cbChkCholesterol;}

    public DefaultTableModel getRightTableModel()
    {
        return this.tblRightModel;
    }

    public DefaultTableModel getLeftTableModel()
    {
        return this.tblLeftModel;
    }

    public JTable getLeftTable()
    {
        return this.tblLeft;
    }

    public JTable getRightTable()
    {
        return this.tblRight;
    }

    public void addRowToRightTable(Object[] newData)
    {
        tblRightModel.insertRow(tblRight.getRowCount(), newData);
    }

    public void populateLeftTable(String[][] data)
    {
        for(int i = 0; i < data.length; i++)
        {
            Object[] tempData = data[i];
            tblLeftModel.insertRow(tblLeft.getRowCount(), tempData);
        }
    }

    public void addColumnToRightTable(String code) throws ParseException {
        tblRightModel.addColumn("Cholesterol",op.getAllPatientObservationValues(code));
    }
}
import javax.swing.*;
导入javax.swing.table.DefaultTableModel;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.event.ActionListener;
导入java.text.ParseException;
公共类GUIManager扩展了JFrame{
私人业务处;
私人JPanel PNLMAIN;
私人JPanel PNLTOP;
私人JCheckBox cbChkCholesterol;
私人JPanel PNLMIDLE;
私人JTable-tblLeft;
私有DefaultTableModel-tblLeftModel;
专用JTable tblRight;
私有DefaultTableModel tblRightModel;
私人按钮;
私人按钮btBtnRemove;
私人JPanel PNLBOTOM;
私人JButton btnexit;
私人JLabel lbLblTime;
专用JTextField tfTxtSeconds;
私人JLabel lblthreshhold;
私有JTextField tfTxtThreshold;
公共管理人员(操作不操作)
{
设置大小(1000650);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(“FHIR患者监护仪”);
pnlmain=new JPanel();
pnlmain.setboorder(BorderFactory.createTitledBorder(“FHIR”);
GridBagLayout gbPnlMain=新的GridBagLayout();
GridBagConstraints gbcPnlMain=新的GridBagConstraints();
pnlmain.setLayout(gbPnlMain);
pnltop=新的JPanel();
pnltop.setboorder(BorderFactory.createTitledBorder(“列详细信息”);
GridBagLayout gbPnlTop=新的GridBagLayout();
GridBagConstraints gbcPnlTop=新的GridBagConstraints();
pnltop.setLayout(gbpntop);
cbChkCholesterol=新的JCheckBox(“胆固醇”);
gbcPnlTop.gridx=2;
gbcPnlTop.gridy=1;
gbcPnlTop.gridwidth=6;
gbcPnlTop.gridheight=1;
gbcPnlTop.fill=GridBagConstraints.BOTH;
gbcPnlTop.weightx=1;
gbcPnlTop.weighty=0;
gbcPnlTop.anchor=gridbagstraints.NORTH;
gbPnlTop.setConstraints(cbChkCholesterol,gbcPnlTop);
PNLTOP.add(CBCHKC胆固醇);
gbcPnlMain.gridx=0;
gbcPnlMain.gridy=0;
gbcPnlMain.gridwidth=20;
gbcPnlMain.gridheight=4;
gbcPnlMain.fill=GridBagConstraints.BOTH;
gbcPnlMain.weightx=1;
gbcPnlMain.weighty=0;
gbcPnlMain.anchor=gridbagstraints.NORTH;
gbPnlMain.setConstraints(pnltop,gbcPnlMain);
pnlmain.add(pnltop);
pnlmidle=new JPanel();
pnlmidle.setboorder(BorderFactory.createTitledBorder(“表”);
GridBagLayout GBPNLMIDLE=新的GridBagLayout();
GridBagConstraints gbcPnlMiddle=新的GridBagConstraints();
pnlmidle.setLayout(gbpnnlmiddle);
字符串[][]dataTblLeft=新字符串[1][2];
String[]colsTblLeft=新字符串[]{“ID”,“全名”};
tblLeftModel=新的DefaultTableModel(dataTblLeft,colsTblLeft);
tblLeft=新的JTable(tblLeft模型);
tBlletModel.removeRow(0);
JScrollPane scpLeftTable=新的JScrollPane(tblLeft);
scpLeftTable.setHorizontalScrollBarPolicy(ScrollPaneConstants.HorizontalScrollBar\uAlways);
scpLeftTable.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL\u SCROLLBAR\u ALWAYS);
gbcPnlMiddle.gridx=0;
gbcPnlMiddle.gridy=0;
gbcPnlMiddle.gridwidth=9;
gbcPnlMiddle.gridheight=12;
gbcPnlMiddle.fill=GridBagConstraints.NONE;
gbcPnlMiddle.weightx=1;
gbcPnlMiddle.weighty=1;
gbcPnlMiddle.anchor=GridBagConstraints.CENTER;
gbPnlMiddle.setConstraints(scpleftable,gbcPnlMiddle);
pnlmidle.add(scpLeftTable);
字符串[][]dataTblRight=新字符串[1][7];
String[]colsTblRight=新字符串[]{“ID”、“全名”、“出生日期”、“性别”、“城市”、“州”、“国家”};
tblRightModel=新的DefaultTableModel(dataTblRight,colsTblRight);
tblRight=新JTable(tblRight模型);
tblRight.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tblRightModel.removeRow(0);
JScrollPane scpRightTable=新的JScrollPane(tblRight);
scpRightTable.setHorizontalScrollBarPolicy(ScrollPaneConstants.HorizontalScrollBar\uAlways);
scpRightTable.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL\u SCROLLBAR\u ALWAYS);
gbcPnlMiddle.gridx=10;
gbcPnlMiddle.gridy=0;
gbcPnlMiddle.gridwidth=9;
gbcPnlMiddle.gridheight=12;
gbcPnlMiddle.fill=GridBagConstraints.NONE;
gbcPnlMiddle.weightx=1;
gbcPnlMiddle.weighty=1;
gbcPnlMiddle.anchor=GridBagConstraints.CENTER;
gbPnlMiddle.setConstraints(scpRightTable、gbcPnlMiddle);
pnlmidle.add(scpRightTable);
BTNADD=新的JButton(“添加”);
gbcPnlMiddle.gridx=2;
gbcPnlMiddle.gridy=12;
gbcPnlMiddle.gridwidth=5;
gbcPnlMiddle.gridheight=2;
gbcPnlMiddle.fill=GridBagConstraints.NONE;
gbcPnlMiddl
public Object[] getAllPatientObservationValues(String code) throws ParseException {
        System.out.println("In this method");
        ArrayList<String> values = new ArrayList<>();
        for (int i = 0; i < allPatients.size(); i++)
        {
            values.add(allPatients.get(i).getObservationValue(code));
        }
        return values.toArray();
    }
    public GUIManager(Operations inOP)
    {
        setSize(1000, 650);
    public GUIManager(Operations inOP)
    {
        op = inOP;
        setSize(1000, 650);