0

I got a swing table that I added from JFrame class design section.There are 5 columns and 6 rows that holding peoples names and their ages and birth dates.I want to save this data whenever I close program and get them when I open my program again and I have no idea. I tried some codes here for table:

jTable1.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {null, null, null, null, null, null, null},
            {null, null, null, null, null, null, null},
},
        new String [] {
            "İSİM", "NO", "İZİN NEDENİ", "İZİNE ÇIKIŞ TARİHİ", "İZİN GÜNÜ", "İZİN BİTİŞ TARİHİ", "KALAN izin hakkı"
        }

and this how i try to save

public void toExcel(JTable jTable1, File file)

{

    try{
        TableModel model;
                model = jTable1.getModel();
                try (FileWriter excel = new FileWriter(file)) {
                    for(int k = 0; k < model.getColumnCount(); k++){
                        excel.write(model.getColumnName(k) + "\t");
                    }

                    excel.write("\n");

                    for(int l=0; l< model.getRowCount(); l++) {
                        for(int j=0; j < model.getColumnCount(); j++) {
                            excel.write(model.getValueAt(l,j).toString()+"\t");
                        }
                        excel.write("\n");
                    }
                }
    }catch(IOException e){ System.out.println(e); }
}

and i got also a button for do call that

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {  

    JFileChooser fc = new JFileChooser();

    int option = fc.showSaveDialog(NewJFrame1.this);
    if(option == JFileChooser.APPROVE_OPTION){
        String filename = fc.getSelectedFile().getName();
        String path = fc.getSelectedFile().getParentFile().getPath();

        int len = filename.length();
        String ext = "";
        String file = "";

        if(len > 4){
            ext = filename.substring(len-4, len);
        }

        if(ext.equals(".xls")){
            file = path + "\\" + filename; 
        }else{
            file = path + "\\" + filename + ".xls"; 
        }
        toExcel(jTable1, new File(file));
    }        // TODO add your handling code here:
}

i get a error like that:

xception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javaapplication7.NewJFrame1.toExcel(NewJFrame1.java:38) at javaapplication7.NewJFrame1.jButton2ActionPerformed(NewJFrame1.java:453) at javaapplication7.NewJFrame1.access$400(NewJFrame1.java:11) at javaapplication7.NewJFrame1$5.actionPerformed(NewJFrame1.java:278) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6525) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6290) at java.awt.Container.processEvent(Container.java:2234) at java.awt.Component.dispatchEventImpl(Component.java:4881) at java.awt.Container.dispatchEventImpl(Container.java:2292) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) at java.awt.Container.dispatchEventImpl(Container.java:2278) at java.awt.Window.dispatchEventImpl(Window.java:2739) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) at java.awt.EventQueue.access$400(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:697) at java.awt.EventQueue$3.run(EventQueue.java:691) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:719) at java.awt.EventQueue$4.run(EventQueue.java:717) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

user3670278
  • 39
  • 1
  • 1
  • 6
  • You could use a CSV library, which would make life a lot easier. You could also use something like [JAXB](https://docs.oracle.com/javase/tutorial/jaxb/intro/) – MadProgrammer Jul 01 '15 at 06:53
  • Also, what's you're question? – MadProgrammer Jul 01 '15 at 06:53
  • question is my code does not work add datas thats fine i click on jbutton thats also fine but afterwards whenever type an excel name and click to save it gives error btw also it create a excel file but empty – user3670278 Jul 01 '15 at 06:58
  • @MadProgrammer can you help me about that i have no idea how to use csv library – user3670278 Jul 01 '15 at 07:01
  • Something like [opencsv](http://opencsv.sourceforge.net/) or [Commons CSV](https://commons.apache.org/proper/commons-csv/) for example. What error are you getting? – MadProgrammer Jul 01 '15 at 07:03
  • @MadProgrammer i edit for error – user3670278 Jul 01 '15 at 07:17
  • You have a `NullPointerException`, some object you are trying to use is `null`, without a runnable example which demonstrates your problem it will be next to near impossible to find the problem. You will need to learn some debugging skills and try and find it yourself. I suggest you start by identifying line `38` of `NewJFrame1.java` and using `System.out.println` to print out the values of the objects from that line – MadProgrammer Jul 01 '15 at 07:23
  • seems like my problem is i have null rows on table i delete all rows and add 1 not null one it worked – user3670278 Jul 01 '15 at 07:35

0 Answers0