Probleme jscrollpane (scroll bar)

Signaler
Messages postés
1
Date d'inscription
samedi 11 décembre 2004
Statut
Membre
Dernière intervention
27 avril 2010
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bonjour,

Je vous explique mon problème, après avoir largement cherché sur internet j'avoue ne pas avoir trouvé de solution.

J'ai créé un graphe en utilisant Graphics2D, mon graphe est un ensemble de noeuds et d'arcs. La position d'un noeud j dépends de la position du noeud i qui le précède.

Sauf que mon graphe généré était trop grand et dépassait la taille de l'écran.

Solution : mettre un scroll bar

Après m'être documenté sur internet, j'ai décidé d'utiliser Jscrollpane.

Maintenant quand j'exécute le programme, je vois bien le scrollbar, sauf que quand je descend avec le scrollbar, ou que je vais à droite ou à gauche, mon graphe se coupe toujours au niveau de la taille de mon écran et je ne vois pas le suite !!!

J'ai pensé à quelque chose comme le rafrachissement (update...) ... , et essayé quelques solutions en vain.

J'ai SIMPLIFIE mon problème avec l'affichage d'un rectangle (car la méthode qui construit le graphe est un peu trop longue). Mon problème peut être similaire à celui décrit dans le code ci-dessous.(CLASSE01 + CLASSE02)

Ces deux classes permettent d'afficher un rectangle. Sauf que la position du rectangle dépasse la taille de l'écran et avec le scrollPane je n'arrive pas à le visualiser.



Si quelqu'un pouvait me donner même une indication sur comment procéder, ou me dire ce qui cloche..

Merci

- Masquer le texte des messages précédents -
Voici mon code:

====CLASSE01
public class AppletApp extends JApplet
implements Runnable {
public Console c;
static public Graphe gpf;


public void initApplication() {

setLayout(new BorderLayout());
setPreferredSize(new Dimension(1500,1500));
c = new Console();
c.setSize(1500,1500);
add("Center",c);

}


public void start() {}

public void stop() {}

public void run() {}


public static void main(String args[]) {

JFrame f = new JFrame("Exemple ");
gpf=XmlClasse.go();

AppletApp app = new AppletApp();
app.initApplication();
app.start();
JScrollPane jp = new JScrollPane(app);
f.setSize(200,200);
f.getContentPane().add(jp);

jp.setVisible(true);

f.setVisible(true);
f.show();
}


}
======FIN CLASSE01


======CLASSE02
package Interface;
import java.awt.*;
import javax.swing.*;
public class Console extends JPanel {
public int im = 0 ;
static public Graphics2D g2;


public void paint(Graphics g) {
g2 =(Graphics2D) g;

g2.draw3DRect(700,700,200,60,
true);
}
}
=====Fin CLASSE02

Merci à tous

1 réponse

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Salut,

Il faut utiliser la fonction paintComponent et non repaint.

Le petit tutoriel qui va bien.

Regarde surtout la section pour SWING et non pour AWT.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement