Вставьте JPanel с нулевым макетом в JScroll

У меня есть JPanel (myPanel) с большим количеством кнопок внутри (эта панель содержится в другой панели, содержащей другие компоненты). Я бы вставил этот JPanel (myPanel) в свиток, чтобы лучше контролировать кнопку.

Это часть моего кода:

    JPanel firstPanel = new JPanel(null);
    ......
    ......        
    JPanel myPanel = new JPanel(null);
    myPanel.setBounds(0, position+22, 400, 500);
    for (int i=0; i<size; i++) {
        JButton button = new JButton(myList.get(i));
        if (counter%4 == 0) {
            button.setBounds(270, 0+(4*i), 90, 18);
        } else if (counter%3 == 0) {
            button.setBounds(180, 4+(4*i), 90, 18);
        } else if (counter%2 == 0) {
            button.setBounds(90, 8+(4*i), 90, 18);
        } else {
            button.setBounds(0, 12+(4*i), 90, 18);
        }
        myPanel.add(bottone);
     }
     ......
     ......
     firstPanel.add(myPanel);

Итак, как я могу сделать, чтобы вставить его в свиток?

1 ответ

Похоже, ваш вопрос спрашивает о том, как добавить JPanel в JScrollPane, когда JPanel использует null макет, и ответ прост:

  • Прежде всего, не используйте null раскладка. Использование нулевых макетов почти гарантирует, что компонент, содержащийся в JScrollPane, не будет прокручиваться надлежащим образом, поскольку механика JScrollPane требует использования этого.
  • Либо это, либо вам потребуется создать класс, который расширяет JPanel и реализует интерфейс Scrollable, а это потребует гораздо больше работы и совершенно ненужной работы.
  • Вместо этого вы действительно должны научиться использовать, а затем использовать соответствующий набор менеджеров компоновки, чтобы ваши JPanels удерживали и отображали их компоненты. Обратите внимание, что вы можете вкладывать JPanels, каждый из которых использует свой собственный макет, тем самым легко создавая сложные, но простые в обслуживании графические интерфейсы. Пожалуйста, ознакомьтесь с руководством по компоновке для получения дополнительной информации по этому вопросу.
  • Добавить JPanel в JScrollPane легко. Либо передайте JPanel в конструктор JScrollPane: JScrollPane scrollpane = new JScrollPane(myPanel); или передайте JPanel в представление области просмотра JScrollPane через setViewportView(myPanel), Вот учебник JScrollPane для получения дополнительной информации об этом и общие учебники Swing.
Другие вопросы по тегам