1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| public class TScrollPane implements ActionListener {
JFrame frame;
JScrollPane pane;
JPanel panel;
int labelId;
int posx;
int posy;
public void createAndShow() {
// creation de la frame
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// creation du panel
panel = new JPanel();
panel.setLayout(null);
// creation du scroll pane
pane = new JScrollPane(panel);
pane.setPreferredSize(new Dimension(300,300));
// le bouton pour ajouter des composants dans le panel
JButton button = new JButton("Add Component");
button.addActionListener(this);
// on affiche la frame
frame.getContentPane().add(pane, BorderLayout.CENTER);
frame.getContentPane().add(button, BorderLayout.WEST);
frame.pack();
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// ajout du nouveau label dans le panel
JLabel label = new JLabel("New Label "+labelId++);
label.setBounds(posx, posy, 100, 30);
panel.add(label);
// on previent le scrollpane qu'il doit se remettre a jour
panel.setPreferredSize(new Dimension(posx+100, posy+30));
panel.revalidate();
// on demande le redessin
pane.repaint();
// position du prochain label
posx+=30;
posy+=30;
}
public static void main(String[] args) {
new TScrollPane().createAndShow();
}
} |
Partager