If you set up your JList with a DefaultListModel you can add and remove items from the list. See the DefaultListModel api for methods to do this. Same for the JTable, use a DefaultTableModel and you can add and remove rows and columns. You can change the values in cells with the TableModel interface. With your button ActionListeners check for the selections in either component before you do the remove/add operations. Changes made to the models are sent to the view–components which update themselves. You have choices to make along the way like where new rows/columns will be added into the JTable and where new items will be added to the JList.