JScrollPane не прокручивается до нижних элементов - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть код, который создает JPanel с именем mainPanel. Я установил, что JPanel отделен от JScrollPane, называемого scrollableTextArea.

В этом методе у меня есть цикл for, который добавляет новые экземпляры класса QuestionComponent в эту JPanel. Этот класс QuestionComponent расширяет JPanel и добавляет их в виде сетки, изменяя ось Y в зависимости от количества QuestionComponents.

Проблема в том, что scrollPanel не будет прокручиваться внизк JPanels ниже, даже если они были добавлены к mainPanel.

    public static void init_main_gui(JFrame frame) {

        JPanel mainPanel = new JPanel();
        mainPanel.setBackground(new java.awt.Color(240,240,240));
        mainPanel.setSize(50, 100);
        mainPanel.setLayout(null);
        frame.add(mainPanel);

        JScrollPane scrollableTextArea = new JScrollPane(mainPanel);  
        scrollableTextArea.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);  
        scrollableTextArea.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);  
        scrollableTextArea.setBounds(0, 0, 700, 800);
        frame.getContentPane().add(scrollableTextArea);


        for (int i = 10; i > 0; i--) {
            mainPanel.add(new QuestionComponent("This is question #1", new ArrayList<String>()));
        }
// Effectively makes any instance of this class a new JPanel
public class QuestionComponent extends JPanel{

    private static final long serialVersionUID = -3786858516685867503L;

    static int questionCount = 0; 

    QuestionComponent(String question, ArrayList<String> answers){

        questionCount ++;
        this.setLayout(null);
        this.setBackground(new java.awt.Color(220,220,220));
        // Y value is changed here based on the amount of question components
        this.setBounds(0, (questionCount*310)-150, 700, 300);

        JTextArea questionText = new JTextArea();
        questionText.setText("Text Place Holder");
        questionText.setFont(new Font("Subtotal",Font.PLAIN, 15));
        questionText.setForeground(Color.black);
        questionText.setLineWrap(true);
        questionText.setBounds(0, 0, 585, 150);
        questionText.setEditable(false);
        questionText.setBackground(null);
        this.add(questionText);

        System.out.println("Created new instance: "+((questionCount*310)-150));
    }
}
...