Bonjour,
Concernant la première question (barre de défilement), une lecture du tutoriel de Sun (ou d'un autre) serait probablement instructive :
http://java.sun.com/docs/books/tut [...] lpane.html
Un exemple simple de barre de défilement autour d'un JPanel contenant une centaine de JTextArea :
Code :
- import java.awt.*;
- import javax.swing.*;
- public class MonTest3JScrollPaneContenantDesJTextArea {
-
- public static void main(String[] args) {
-
- // initialisation de la frame :
- JFrame maFrame = new JFrame();
- maFrame.setResizable(false);
- maFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- // on veut qu'elle prenne toute la place possible
- Toolkit kit = Toolkit.getDefaultToolkit();
- Insets insets = kit.getScreenInsets(maFrame.getGraphicsConfiguration());
- Dimension screen = kit.getScreenSize();
- maFrame.setSize((int)(screen.getWidth()-insets.left-insets.right), (int)(screen.getHeight()-insets.top-insets.bottom));
- maFrame.setLocation((int)(insets.left), (int)(insets.top));
-
- // affichage de la frame
- maFrame.setVisible(true);
-
- // container de la frame
- JPanel bigPanel = new JPanel();
- bigPanel.setLayout(new BorderLayout());
- maFrame.setContentPane(bigPanel);
-
- // une boîte verticale englobée dans un JScrollPane, destinée à recevoir des JTextArea :
- JPanel verticalBoxPanel = new JPanel();
- verticalBoxPanel.setLayout(new BoxLayout(verticalBoxPanel, BoxLayout.Y_AXIS));
- JScrollPane scroll = new JScrollPane(verticalBoxPanel);
- bigPanel.add(scroll);
-
- // on rajoute des JTextArea :
- JTextArea area;
- double position = 0.5; // POSITION DE LA BARRE DE DEFILEMENT (ENTRE 0 et 1)
- int nbDeJTextArea = 100;
- for (int i=0; i<nbDeJTextArea; i++) {
- area = new JTextArea("JTextArea "+i+" sur "+nbDeJTextArea);
- verticalBoxPanel.add(area);
- JScrollBar jsb = scroll.getVerticalScrollBar();
- jsb.setValue((int) (jsb.getMinimum()+(jsb.getMaximum()-jsb.getMinimum())*position));
- bigPanel.revalidate();
- try {Thread.sleep(50);} catch (Exception e) {e.printStackTrace();}
- }
- }
- }
|
Nicolas