Observez le fonctionnement de cet applet. On peut cliquer avec la souris, on obtient des petits ronds. On remarque qu'on dispose d'ascenseurs, pour avoir un composant accessible plus grand que la partie visible.
Notre application est quasiment identique à
l'applet.
import javax.swing.JFrame;
Vous pouvez obtenir :
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
class DisqueGraphique {
private int rayon, x, y;
Color couleur = Color.MAGENTA;
public DisqueGraphique(int rayon, int x, int y) {
this.rayon = rayon;
this.x = x;
this.y = y;
}
void dessiner(Graphics g) {
g.setColor(couleur);
g.fillOval(x - rayon, y - rayon, 2 * rayon, 2 * rayon);
}
}
class ArdoiseScroll extends JPanel {
ArrayList
ArdoiseScroll() {
setPreferredSize(new Dimension(400, 600));
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt)
{
liste.add(new DisqueGraphique(10, evt.getX(), evt.getY()));
repaint();
}
});
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (DisqueGraphique disque : liste) disque.dessiner(g);
}
}
public class Scroll extends JFrame {
public Scroll() {
JScrollPane ascenseurs = new JScrollPane(new ArdoiseScroll());
ascenseurs.setPreferredSize(new Dimension(200, 200));
add(ascenseurs, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(100, 100);
pack();
setVisible(true);
}
}
class EssaiScroll {
public static void main(String[] arg) {
new Scroll();
}
}