单击按钮后,Java JTable不会从文件加载数据

时间:2016-04-27 19:07:50

标签: java swing intellij-idea

我正在制作一个Java程序 - 一个数据库旅游机构。所以我使用的是Swing GridLayout,然后想要将其转换为带有Intellij IDEA的.form文件。当我做的一切都停止了工作,现在我 无法从文件加载数据或将新数据添加到文件。这是代码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
import javax.swing.*;

import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class Ld31514462 extends javax.swing.JFrame {

private JTabbedPane jTabbedPane1;
private JPanel jPanel1;
private JPanel jPanel2;
private JScrollPane jScrollPane1;
private JTable jTable1;
private javax.swing.JPanel JPanel;
private JButton dzestIerakstuButton;
private JButton loadDataButton;
private JTextField textField1;
private JTextField textField2;
private JTextField textField3;
private JTextField textField4;
private JTextField textField5;
private JButton pievienotButton;
private JTextField textField6;
private JButton atrastButton;

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            Ld31514462 inst = new Ld31514462();
            inst.setLocationRelativeTo(null);
            inst.setVisible(true);
        }
    });
}

public Ld31514462() {
    super();
    initGUI();
}

private void initGUI() {
    try {
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        getContentPane().add(getJTabbedPane1(), BorderLayout.CENTER);
        pack();
        setSize(600, 400);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private JTabbedPane getJTabbedPane1() {
    if(jTabbedPane1 == null) {
        jTabbedPane1 = new JTabbedPane();
        jTabbedPane1.addTab("Dati", null, getJPanel1(), null);
        jTabbedPane1.addTab("Pievienot Jaunu Celazimi", null, getJPanel2(), null);

    }
    return jTabbedPane1;
}

private JPanel getJPanel1() {
    if(jPanel1 == null) {
        //jPanel1 = new JPanel();
        BorderLayout jPanel1Layout = new BorderLayout();
        jPanel1.setLayout(jPanel1Layout);
        jPanel1.add(getJScrollPane1(), BorderLayout.CENTER);
       // jPanel1.add(loadDataButton, BorderLayout.NORTH);
        //jPanel1.add(dzestIerakstuButton, BorderLayout.SOUTH);
        dzestIerakstuButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                int nbrrow=jTable1.getRowCount();

                if(nbrrow>=1){
                    int[] rows = jTable1.getSelectedRows();
                    if(rows.length>=1){
                        if(jTable1.getModel().isCellEditable(jTable1.getSelectedRow(),jTable1.getSelectedColumn())
                                &&jTable1.isEditing()==true)
                        {
                            jTable1.getCellEditor().stopCellEditing();
                            for(int i=0;i<rows.length;i++){
                                model.removeRow(rows[i]-i);
                            }
                        }else{
                            for(int i=0;i<rows.length;i++){
                                model.removeRow(rows[i]-i);
                            }

                        }
                        /*for(int i=0;i<jTable1.getRowCount();i++){
                            model.setValueAt(i, i, 0);
                        }*/
                        jTable1.revalidate();
                        jTable1.repaint();
                    }
                }

            }
        });
        loadDataButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                model.setRowCount(0);

                BufferedReader br = null;
                ArrayList rosterList = new ArrayList();
                try {
                    br = new BufferedReader(new FileReader("/home/nauris/Desktop/mydata.txt"));
                    String line = br.readLine();
                    while (line != null ) {
                        rosterList.add(line);
                        //String [] rowfields = line.split(" ");
                        //for (String s : rowfields) {
                        //System.out.println(s);
                        //DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                        model.addRow(line.split(", "));

                        //}
                        line = br.readLine();
                    }

                } catch (FileNotFoundException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }

            }
        });
       // jPanel1.add(textField6);
       // jPanel1.add(atrastButton, BorderLayout.AFTER_LAST_LINE);

    }
    return jPanel1;
}
private JPanel getJPanel2() {
    if(jPanel2 == null) {
       /* jPanel2 = new JPanel();
        jPanel2.setLayout( new GridLayout( 6, 2 ) );

        JLabel label1 = new JLabel( "Pilseta:" );
        label1.setBounds( 10, 15, 150, 20 );
        jPanel2.add( label1 );

        JTextField field1 = new JTextField();
        field1.setBounds( 10, 35, 150, 20 );
        jPanel2.add( field1 );

        JLabel label2 = new JLabel( "Dienu skaits:" );
        label2.setBounds( 10, 60, 150, 20 );
        jPanel2.add( label2 );

        JTextField field2 = new JTextField();
        field2.setBounds( 10, 80, 150, 20 );
        jPanel2.add( field2 );

        JLabel label3 = new JLabel( "Transportlidzekla veids:" );
        label3.setBounds( 10, 105, 180, 20 );
        jPanel2.add( label3 );

        JTextField field3 = new JTextField();
        field3.setBounds( 10, 125, 150, 20 );
        jPanel2.add( field3 );

        JLabel label4 = new JLabel( "Cena:" );
        label4.setBounds( 10, 150, 150, 20 );
        jPanel2.add( label4 );

        JTextField field4 = new JTextField();
        field4.setBounds( 10, 170, 150, 20 );
        jPanel2.add( field4 );

        JLabel label5 = new JLabel( "Datums:" );
        label5.setBounds( 10, 195, 150, 20 );
        jPanel2.add( label5 );

        JTextField field5 = new JTextField();
        field5.setBounds( 10, 215, 150, 20 );
        jPanel2.add( field5 );

        JLabel label6 = new JLabel( "" );
        label6.setBounds( 10, 195, 150, 20 );
        jPanel2.add( label6 );*/

        //jPanel2.add( new JButton( "Pievienot" ), BorderLayout.SOUTH );
        //JButton btn = new JButton("Pievienot");
        //jPanel2.add(btn);

        pievienotButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //String s;
                //s = field1.getText() + " " + field2.getText() + " " + field3.getText() + " " + field4.getText() + " " + field5.getText();
                //label6.setText(s);
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                String[] newrow = { textField1.getText(), textField2.getText(), textField3.getText(), textField4.getText(), textField5.getText() };
                model.addRow(newrow);
                try {
                    saveTable();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        });

    }
    return jPanel2;
}

public void saveTable()throws Exception
{
    JFileChooser filesave = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter("TEXT File", ".txt", "text");
    filesave.setFileFilter(filter);
    try {
        // File file = filesave.getSelectedFile();
        FileWriter fout = new FileWriter("/home/nauris/Desktop/mydata.txt");
        PrintWriter os = new PrintWriter(fout);
        for (int row = 0; row < jTable1.getRowCount(); row++) {
            for (int col = 0; col < jTable1.getColumnCount(); col++) {
                //os.print(jTable1.getColumnName(col));
                //os.print(": ");
                os.print(jTable1.getValueAt(row, col) + ", ");


            }
            os.println();
        }

        os.close();
        //System.out.println("Done!");
    } catch (IOException e1) {
        e1.printStackTrace();
    }
}

private JScrollPane getJScrollPane1() {
    if(jScrollPane1 == null) {
       // jScrollPane1 = new JScrollPane();
        jScrollPane1.setViewportView(getJTable1());
    }
    return jScrollPane1;
}

private JTable getJTable1() {
    if(jTable1 == null) {
        String[] columnNames = {"Pilseta", "Dienas","Transportlidzekla veids","Cena","Datums"};

        DefaultTableModel jTable1Model = new DefaultTableModel();
        /*TableModel jTable1Model =
                new DefaultTableModel(
                        //new String[][] { { "One", "Two" }, { "Three", "Four" } },
                        new String[] { "Pilseta", "Dienas","Transportlidzekla veids","Cena","Datums" });*/
        jTable1Model.addColumn(columnNames[0]);
        jTable1Model.addColumn(columnNames[1]);
        jTable1Model.addColumn(columnNames[2]);
        jTable1Model.addColumn(columnNames[3]);
        jTable1Model.addColumn(columnNames[4]);
        //jTable1Model.addColumn(columnNames[5]);
        //jTable1 = new JTable();
        jTable1.setModel(jTable1Model);

        RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(jTable1Model);

        jTable1.setRowSorter(sorter);

        jTable1.getModel().addTableModelListener(new TableModelListener() {
            @Override
            public void tableChanged(TableModelEvent e) {
                // access the values of the model and save them to the file here
                try {
                    saveTable();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        });
    }
    return jTable1;
}

}

0 个答案:

没有答案