Это класс, в котором запускается программа.JScrollPane не работает, viewport представляет собой панели для укладки
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class runClass {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(1366, 768);
frame.setVisible(true);
JPanel backgroundPanel = new JPanel();
backgroundPanel.setBounds(0, 0, 1366, 768);
backgroundPanel.setBackground(Color.PINK);
frame.getContentPane().add(backgroundPanel);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0,1,10,10));
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(228, 5, 453, 426);
scrollPane.setViewportView(panel);
scrollPane.setVisible(true);
backgroundPanel.setLayout(null);
backgroundPanel.add(scrollPane);
for (int x = 0; x < 15; x++){
panel.add(new ExerciseList(new Exercise("hello")));
}
panel.revalidate();
panel.repaint();
}
}
Это панели, которые добавляются в контейнер.
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Font;
public class ExerciseList extends JPanel{
private Exercise exercise;
public ExerciseList(Exercise e){
this.exercise = e;
setLayout(null);
setVisible(true);
setBackground(Color.LIGHT_GRAY);
JLabel lblName = new JLabel(exercise.getName());
lblName.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblName.setBounds(229, 11, 209, 22);
add(lblName);
}
}
Этот класс упражнений используется для извлечения информации для ExerciseList.
public class Exercise {
private String name;
public Exercise(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Это изображение укладки ExerciseList, которое я получаю.
Любая помощь приветствуется! Спасибо
Для лучшей помощи рано пожалуйста, оставить в силе [mcve], который демонстрирует проблему. Вероятно, связано с сочетанием менеджера макетов (https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html) и 'setBounds()'. Однако для вашего графического интерфейса вы можете попробовать использовать ['JTable'] (https://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html) – Frakcool
Хорошо, спасибо! Я предпочитаю оставаться с этим графическим интерфейсом. Итак, где проблема может возникнуть как из менеджера компоновки, так и для setbounds()? –
Проблема в том, что вы не можете и не должны этого делать. Пусть макеты и компоненты имеют предпочтительные размеры, устанавливают их фактический размер, иначе GUI отображается смешными способами, как вы видите. –