Problème rafraichissement de l'écran avec un scrollbar en JAVA

Passboss87 Messages postés 11 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 27 février 2010 - 23 févr. 2010 à 01:58
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 24 févr. 2010 à 14:44
bonjour, voila je suis débutant en JAVA. j'ai programmé un editeur de carte pour un jeu que je ferais par la suite.
Mon éditeur se sert de petites images(25*25) pour remplir la map qui est donc composé de beaucoup de petit panel.
Cela fonctionne tres bien lorsque j'ajoute des choses sur ma map jusqu'au moment où je clic sur la barre de défilement
( oui car ma map est tres longue ), le probleme est qu'a chaque fois que je clic sur cette "scrollbar" tout les petites
images composant la map deviennent toutes petites, elles rétrecissent.
Quelqu'un pourrait me dire quel est le problème ?

3 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
23 févr. 2010 à 19:38
C'est pas facile de t'aider sans voir ton code. Essaie une fois cet exemple:
import java.awt.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
public class Testing extends JFrame {
    private final List<List<MyIcon>> map;
    public Testing() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(1000, 500);
        setLocationRelativeTo(null);
        map = new ArrayList<List<MyIcon>>();
        for (int i = 0; i < 25; i++) {
            List<MyIcon> iconList = new ArrayList<MyIcon>();
            for (int j = 0; j < 25; j++) {
                iconList.add(new MyIcon());
            }
            map.add(iconList);
        }
        JPanel panel = new JPanel(new GridLayout(0, 25));
        for (List<MyIcon> list : map) {
            for (MyIcon myIcon : list) {
                JLabel carte = new JLabel(myIcon);
                panel.add(carte);
            }
        }
        add(new JScrollPane(panel));
    }
    public static void main(final String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Testing().setVisible(true);
            }
        });
    }
}
class MyIcon implements Icon {
    private final Color color;
    public MyIcon() {
        final Random r = new Random();
        color = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));
    }
    public void paintIcon(final Component c, final Graphics g,
            final int x, final int y) {
        Graphics2D g2 = (Graphics2D) g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g.setColor(color);
        g.fillOval(x + 2, y + 2, getIconWidth() - 4, getIconHeight() - 4);
    }
    public int getIconWidth() {
        return 32;
    }
    public int getIconHeight() {
        return 64;
    }
}
0
Passboss87 Messages postés 11 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 27 février 2010
24 févr. 2010 à 10:18
Bonjour merci pour ta réponse mais je pense que cela ne vient pas du code, car (étant sur mac) je l'ai tester chez un ami sur windows tout marche tres bien.Donc je ne sais pas du tout d'où pourrait pas venir le probleme, quelqu'un aurait une idée ?
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
24 févr. 2010 à 14:44
> je pense que cela ne vient pas du code

As-tu essayer mon code? S'il fonctionne, nous avons une chance de trouver quand même une solution dans ton code!
0