Il s'agit de la classe dans laquelle le programme est exécuté.JScrollPane ne fonctionne pas, viewport empile les panneaux
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();
}
}
Ce sont les panneaux qui sont ajoutés dans le conteneur.
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);
}
}
Ceci est la classe d'exercices utilisée pour extraire des informations pour 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;
}
}
Ceci est une image de l'empilage de ExerciseList que je reçois.
Toute aide est appréciée! Merci
Pour une meilleure aide plus tôt s'il vous plaît poster un valide [mcve] qui démontre la question. Probablement lié au mélange d'un [Gestionnaire de mise en page] (https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html) et 'setBounds()'. Cependant, pour votre interface graphique, vous pouvez essayer d'utiliser un ['JTable'] (https://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html) – Frakcool
Ok merci! Je préfère rester avec cette mise en page GUI. Alors, où le problème peut provenir à la fois du gestionnaire de mise en page et setbounds()? –
Le problème est que vous ne pouvez pas et ne devriez pas faire cela. Laissez les dispositions et les tailles préférées des composants définir leur taille réelle, sinon l'interface graphique est affichée de manière amusante comme vous le voyez. –