package UI.Components; import Store.Book; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.sql.SQLException; import java.util.ArrayList; public class BooksList extends JPanel { private static JPanel listPanel; public BooksList() throws SQLException { listPanel = new JPanel(); listPanel.setLayout(new BoxLayout(listPanel, BoxLayout.Y_AXIS)); refreshBooks(); JScrollPane scrollPane = new JScrollPane(listPanel); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); this.add(scrollPane); this.setBorder(new EmptyBorder(4, 8, 8, 8)); this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); } public static void refreshBooks(ArrayList books) throws SQLException { new Thread(new Runnable() { @Override public void run() { listPanel.removeAll(); for (Book book : books) { listPanel.add(new BookListItem(book)); } listPanel.revalidate(); listPanel.repaint(); } }).start(); } public static void refreshBooks() throws SQLException { refreshBooks(Book.getAll(false)); } }