title: ScrollPane adding to grid layout
body: <p>in my code I am calling a few items(my buttons with their names leading to different project. The names and everything are taken from a database)
  I want a J ScrollPane to surround my buttons, what can I do? I just want the buttons to be called inside the scroll pane. Here is my code</p>
  
  <pre><code>import java.sql.*;
  import java.util.ArrayList;
  
  import java.util.List;
  
  import java.awt.GridLayout;
  
  import javax.swing.JFrame;
  import javax.swing.JOptionPane;
  import javax.swing.JPanel;
  import javax.swing.JLabel;
  
  import javax.swing.JButton;
  
  import java.awt.event.ActionListener;
  import java.awt.event.ActionEvent;
  
  
  public class AdminClass implements ActionListener  {
  
  ProjectButton[] buttons = new ProjectButton[35];
  
  //Creating data field for unique Ids in the form of array list
  ArrayList&lt;Integer&gt; uniqueIDList = new ArrayList&lt;Integer&gt;();
  String[] projectNames;
  int[] uniqueIds;
  
  Connection conn1 = null;
  Statement stmt1 = null;
  
  JFrame frame = new JFrame("Admin Panel");
  private JPanel panel = new JPanel();
  JButton btnNewButton = new JButton("Add New Project");
  
  public AdminClass() {
  
      panel.setLayout(new GridLayout(10, 1));
  
      panel.add(new JLabel("Welcome to Admin Panel"));
  
      btnNewButton.addActionListener(this);
      panel.add(btnNewButton);
  
      panel.add(new JLabel("Existing Projects"));
  
      conn1 = sqliteConnection.dbConnector();
  
      try{
            Class.forName("org.sqlite.JDBC");
            conn1.setAutoCommit(false);
            stmt1 = conn1.createStatement();
            ResultSet rs1 = stmt1.executeQuery( "SELECT * FROM Project;" );
  
            List&lt;String&gt; projectNameList = new ArrayList&lt;String&gt;();
  
            while ( rs1.next() ){
                int id = rs1.getInt("uniqueid");
                String projectName = rs1.getString("name");
  
                projectNameList.add(projectName);
                uniqueIDList.add(id);
            }
  
            // Converting array list to array
            projectNames = new String[projectNameList.size()];
            projectNameList.toArray(projectNames);
  
            uniqueIds = convertIntegers(uniqueIDList);
  
  
            rs1.close();
            stmt1.close();
            conn1.close();
      }
      catch ( Exception e1 ) {
          JOptionPane.showMessageDialog(null, e1);    
      }
  
      // Adding buttons to the project
      try{
          for (int i = 0; i &lt; projectNames.length; i++){
              buttons[i] = new ProjectButton(projectNames[i]);
              buttons[i].setId(uniqueIds[i]);
  
              panel.add(buttons[i]);
              buttons[i].addActionListener(this);
  
          }
      }
      catch (Exception e2){
          JOptionPane.showMessageDialog(null, e2);
      }
  
      frame.add(panel);
      frame.setVisible(true);
      frame.setSize(500, 500);
  
  }
  
  public void actionPerformed(ActionEvent e) {
  
      for (int j = 0; j &lt; buttons.length; j ++){
          if (e.getSource() == buttons[j]){
              AdminStatus sc = new AdminStatus(buttons[j].getId());
              frame.dispose();
          }
      }
  
      if (e.getSource() == btnNewButton){
  
          frame.dispose();
          WindowProjectAdmin wpa = new WindowProjectAdmin();
  
      }
  
  }
  
  //Method to convert integar array list to integar array
  public int[] convertIntegers(List&lt;Integer&gt; integers)
      {
          int[] ret = new int[integers.size()];
          for (int i=0; i &lt; ret.length; i++)
          {
              ret[i] = integers.get(i).intValue();
          }
          return ret;
      }
  
  }
  </code></pre>
  
  <p>This may seem very normal but it's really not, for some reason they are not visible or are not called inside a scroller. Please edit my code maybe?</p>