Добавление строк в сохраненную JTable с DefaultTableModel - PullRequest
0 голосов
/ 25 октября 2018
public class testio
{

  public static void main(String[] args)
  {

   frame = new JFrame();
   frame.setSize(500 , 1500);

   panel = new JPanel();

   deftabmod = new DefaultTableModel();
   deftabmod.addColumn("Column1");
   deftabmod.addColumn("Column2");
   deftabmod.addColumn("Column3");

   table = new JTable(deftabmod);

   scrollpane = new JScrollPane(table);
   panel.add(scrollpane);

   deftabmod1 = new DefaultTableModel();
   deftabmod1.addColumn("Column1");
   deftabmod1.addColumn("Column2");
   deftabmod1.addColumn("Column3");

   table1 = new JTable(deftabmod1);

   scrollpane1 = new JScrollPane(table1);
   panel.add(scrollpane1);

   textfield = new JTextField(20);
   panel.add(textfield);

   button_add_row = new JButton("Add Row");
   button_add_row.setPreferredSize( new Dimension( 200 , 25 ) );
   panel.add(button_add_row);
   button_add_row.addActionListener( new button_add_row_actionListener() );

   button_save = new JButton("Save");
   button_save.setPreferredSize( new Dimension( 200 , 25 ) );
   panel.add(button_save);
   button_save.addActionListener( new button_save_actionListener() );

   button_append = new JButton("Append");
   button_append.setPreferredSize( new Dimension( 200 , 25 ) );
   panel.add(button_append);
   button_append.addActionListener( new button_append_actionlistener() );

   frame.add(panel);
   frame.setVisible(true);

  }

}

Выше приведен простой код Java с методом main.Этот класс содержит JTextField, который принимает пользовательский ввод.Далее идет JButton 'add row', который берет String из текстового поля и добавляет его в JTable.Следующая кнопка «save» сохраняет все данные JTable в файл, а следующая JTable показывает сохраненные данные.

    public class button_add_row_actionListener implements ActionListener
{
    Vector<String> addrow;

    @Override
    public void actionPerformed(ActionEvent e)
    {

    addrow = new Vector<String>();
    addrow.addElement(testio.textfield.getText().toString() + " 1");
    addrow.addElement(testio.textfield.getText().toString() + " 2");
    addrow.addElement(testio.textfield.getText().toString() + " 3");
    testio.deftabmod.addRow(addrow);

    testio.textfield.setText(null);

    }

}
    }

Этот (над) класс addrow успешно добавляет строку в JTable.

    public class button_save_actionListener implements ActionListener
{
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        try
        {

        file.createNewFile();
        ObjectOutputStream objectoutputstream = new ObjectOutputStream(new FileOutputStream(file)); 
        objectoutputstream.writeObject(testio.table.getModel());
        objectoutputstream.close();

        }

        catch(Exception esalessave1) 
        {}

        try
        {   

            file.createNewFile();

            ObjectInputStream ois = new ObjectInputStream( new FileInputStream( file ) );

            object = ois.readObject();

            testio.table1.setModel( ( DefaultTableModel ) object ); 

            ois.close();

         }


          catch( Exception exception )
          {}

    }

}

Этот (приведенный выше) класс button_save_actionListener успешно сохраняет все строки, добавленные в файл, а вторая JTable отображает сохраненный файл.

    public class button_append_actionlistener implements ActionListener
{

    @Override
    public void actionPerformed(ActionEvent e) 
    {
        appendrow = new Vector<String>();
        appendrow.addElement(testio.textfield.getText().toString() + " 1");
        appendrow.addElement(testio.textfield.getText().toString() + " 2");
        appendrow.addElement(testio.textfield.getText().toString() + " 3");
        testio.deftabmod.addRow(appendrow);
        testio.deftabmod1.addRow(appendrow);

        testio.textfield.setText(null);

    }

Этот (приведенный выше) класс button_append_actionlistener пытается добавить строку из JTextField воба JTables, но только успешно добавляет строку в первый JTable.

Теперь, пожалуйста, как мне добавить строку в обе таблицы? сильный текст

...