frame.getContentPane().add(jsp); // problem
frame. setSize(1000, 700);
JButton button = new JButton();
button.setSize(new Dimension(300, 300)); // does nothing
button.setLocation(500, 350); // does nothing
frame.getContentPane().add(button); //problem
Проблема в том, что менеджером макета по умолчанию для панели содержимого JFrame является BorderLayout.Вы пытаетесь добавить два компонента в ЦЕНТР BorderLayout, которые не будут работать.Кнопка заменяет панель прокрутки.
Вместо этого вы должны использовать:
frame.getContentPane().add(jsp, BorderLayout.CENTER);
frame. setSize(1000, 700);
JButton button = new JButton("Testing");
frame.getContentPane().add(button, BorderLayout.PAGE_END);
Прочтите раздел из учебника по Swing в Диспетчер макетов для получения дополнительной информации и рабочего примера.BorderLayout.
Как уже упоминалось в первом комментарии.Нет необходимости в getContentPane()
.Фрейм автоматически добавит компонент на панель содержимого.
Кроме того, при выполнении тестирования лучше сделать что-то вроде:
JLabel label = new JLabel("Icon label");
label.setIcon(ii);
Таким образом, если вы укажете неправильный путь дляизображение, вы по крайней мере увидите текст метки и узнаете, что проблема в пути, а не в коде макета.