Faire défiler un JPanel

Je veux un JPanel avec une taille et une position définies. Dans le JPanel, j’ai un certain nombre d’éléments (boutons) insérés horizontalement. Parce que mon JPanel a une largeur définie, si j’ajoute beaucoup de boutons, je ne pourrais pas le voir. Dans ce cas, j’ai besoin d’une barre de défilement pour ce JPanel. Mais ce JPanel doit être une certaine taille dans une certaine position à l’intérieur d’un cadre. La barre de défilement du JPanel s’est positionnée dessous. Quelqu’un peut m’aider? Je l’ai essayé sans succès!

Utilisez un JScrollPane et forcez sa taille preferredSize à votre taille donnée (ou définissez le conteneur scrollPane LayoutManager sur null et appelez setBounds () sur le volet de défilement). Définissez également les stratégies de la barre de défilement. Voici un petit échantillon de cela:

 import java.awt.Dimension; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; public class Test { public static void main(Ssortingng... args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(); for (int i = 0; i < 10; i++) { panel.add(new JButton("Hello-" + i)); } JScrollPane scrollPane = new JScrollPane(panel); scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); scrollPane.setBounds(50, 30, 300, 50); JPanel contentPane = new JPanel(null); contentPane.setPreferredSize(new Dimension(500, 400)); contentPane.add(scrollPane); frame.setContentPane(contentPane); frame.pack(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); } } 

Ajoutez tous les boutons à votre panneau. Ajoutez ensuite ce panneau au défilement.

 panel.add(button1); panel.add(button2); panel.add(button3); . . . panel.add(buttonn); 

Une fois que vous avez ajouté des boutons dans le panneau, ajoutez-le au panneau de défilement.

 JScrollPane panelPane = new JScrollPane(panel); 

Et puis ajoutez ce panneau à votre cadre.

Voici quelques solutions possibles:

  • JList avec JButtons et JPanel avec JButtons

ou

  • pour faire défiler jusqu’au Point ou Rectangle décision, il existe la méthode scrollRectToVisible par exemple, myPanel.scrollRectToVisible(myButton.getBounds());