У меня есть Java-приложение, которое добавляет JTextFields @ runtime в JPanel. В основном пользователь нажимает кнопку, и добавляется новый JTextField, снова добавляются щелчки ...
Каждый новый JTextField находится прямо под предыдущим. Очевидно, у меня заканчивается свободное место довольно скоро, поэтому я пытаюсь использовать JScrollPane, и именно там начинается ад, потому что он просто не работает, независимо от того, что я пытаюсь.
- Щелкните правой кнопкой мыши JPanel и вложите в область прокрутки. Не работает.
- Прочитав несколько примеров, я понял, что у меня должен быть JPanel в качестве аргумента для конструктора JScrollPane. Что я и сделал, щелкнув правой кнопкой мыши на ScrollPane и CustomizeCode. Поскольку, очевидно, автоматически сгенерированный код защищен в NetBeans, и я не могу просто изменить все эти объявления и т. Д. Вручную. Все еще не работает.
- Я пытался установить PreferedSize в NULL для JPanel и / или JScrollPane, не помогло.
- JScrollPane - это дочерний элемент, назовем его TabJPanel (который, в свою очередь, является вкладкой TabbedPane). Я пытался возиться с их отношениями, в основном пытаясь всеми возможными способами установления родства между JFrame, JPanel (держа текстовые поля), TabJPanel и JScrollPane, но ничего не получалось.
- Я также сделал VerticalScrollBar «всегда видимым» на всякий случай. Итак, я вижу полосу прокрутки, просто заполнение этой JPanel JTextFields не влияет на нее.
- Когда имеется слишком много полей JTextFields I, они переходят «ниже» нижней границы JPanel, и я их больше не вижу.
Код для добавления новых JTextFields подобен этому, в случае, если это уместно.
JTextField newField = new JTextField( columns );
Rectangle coordinates = previousTextField.getBounds();
newField.setBounds(coordinates.x , coordinates.y + 50, coordinates.width, coordinates.height);
JPanel.add(newField);
JPanel.revalidate();
JPanel.repaint();
Извините за длинное сообщение, я просто пытаюсь предоставить как можно больше информации, потому что, будучи новичком, я не знаю, что именно уместно, а что нет. Заранее спасибо:)