IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

JScrollPane problème de Refresh


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut JScrollPane problème de Refresh
    Bonjour,
    J'ai un soucis que je n'arrive pas à résoudre depuis 1 semaine je bloque complétement

    J'ai une appli avec TabbedPane j'ai créer 5 Tab
    La première Tab utilise une Class en JScrollPane qui rajoute un JPanel d'une autre Class, Lorsque j'appuie sur un Boutton il charge dans le JScrollPane un autre Panel d'une autre class jusqu'ici tous va bien, ensuite a partir de cette classe je dois revenir en arrière c'est a dire réafficher le premier Panel d'origine. Merci de votre attention et de vos réponse car la je sèche complétement tous ce que j'ai essayé rien y fait ça bouge pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class Test extends JScrollPane {
     
         static BackgroundImage jPanel;
     
         private void initComponents() throws IOException, URISyntaxException, SQLException {
     
              setViewportView(jPanel);       
              setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
              setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
     
         }
     
         private void ButtonActionPerformed(java.awt.event.ActionEvent evt) throws IOException, SQLException, URISyntaxException {                                         
     
                setViewportView(new Test2().jPanel);
                revalidate();
                repaint();
     
        } 
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class Test2 extends JPanel{
     
         static BackgroundImage jPanel;
     
         private void initComponents() throws IOException, URISyntaxException, SQLException {
     
              jb_Button.setSelected(true);
     
         }
     
         private void jb_ButtonItemStateChanged(ItemEvent evt) throws IOException, SQLException, URISyntaxException {                                                
     
                    if(evt.getStateChange()==ItemEvent.SELECTED){                   
     
                      } else if(evt.getStateChange()==ItemEvent.DESELECTED){
     
                          /*Test.jPanel.revalidate();
                          Test.jPanel.repaint();*/
     
                        //new Test().getViewport().add(Test.jPanel);
     
                        //new Test().getViewport().removeAll();
                        new Test().setViewportView(Test.jPanel);
                        new Test().getViewport().revalidate();
                        new Test().getViewport().repaint();
                        //new Test().revalidate();
                        //new Test().repaint();
     
                      }  
        }
     
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Je vois pas trop l’intérêt de mettre des trucs en static pour faire ce genre de choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    import javax.swing.*;
    import javax.swing.border.LineBorder;
    import java.awt.*;
    import java.util.List;
    import java.util.Objects;
    import java.util.stream.IntStream;
     
    public final class Main extends JComponent {
        private final List<Truc> trucs;
     
        public Main() {
            final var backgroundImage = new BackgroundImage();
            final var tabbedPane = new JTabbedPane();
            trucs = IntStream.range(0, 5)
                    .mapToObj(index -> {
                        final var tabName = String.valueOf(index + 1);
                        final var tabContent = new Truc();
                        tabContent.putClientProperty("tab.name", tabName);
                        return tabContent;
                    })
                    .toList();
            trucs.get(0).setClient(backgroundImage);
            trucs.stream()
                    .forEach(tabContent -> tabbedPane.addTab((String) tabContent.getClientProperty("tab.name"), tabContent));
            setLayout(new BorderLayout());
            add(tabbedPane, BorderLayout.CENTER);
        }
     
        public static void main(String... args) {
            SwingUtilities.invokeLater(Main::startAtEDT);
        }
     
        private static void startAtEDT() {
            final var frame = new JFrame("Test");
            frame.setLayout(new BorderLayout());
            frame.add(new Main(), BorderLayout.CENTER);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(800, 600);
            frame.setVisible(true);
        }
     
        private final class Truc extends JPanel {
            private final JButton button = new JButton("Click me");
            private final JScrollPane scrollPane = new JScrollPane();
     
            public Truc() {
                button.addActionListener(event -> goToNextTab());
                setLayout(new BorderLayout());
                add(button, BorderLayout.NORTH);
                add(scrollPane, BorderLayout.CENTER);
    //            setBorder(new LineBorder(Color.RED, 1));
            }
     
            public JComponent getClient() {
                return (JComponent) scrollPane.getViewport().getView();
            }
     
            public void setClient(final JComponent component) {
                scrollPane.setViewportView(component);
            }
     
            private void goToNextTab() {
                final var client = getClient();
                if (Objects.nonNull(client) && !trucs.isEmpty()) {
                    setClient(null);
                    int targetIndex = trucs.indexOf(this) + 1;
                    targetIndex = (targetIndex) == trucs.size() ? 0 : targetIndex;
                    trucs.get(targetIndex).setClient(client);
                }
            }
        }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    La variable est static pour que je puisse la récupérer dans d'autre fonction static

    En faite mes autres Tab sont remplis par d'autre trucs qui ne bouge pas exemple Tab envoie de Mail une autre gestion matériels etc

    Ce que je veux faire c'est uniquement a ma Tab principale au lieu de lancer une fenêtre pour modifier le client je veux rendre ma Tab modifiable puis après sauvegarde revenir en mode non modifiable

    D'ou j'importe la class pour modification qui fonctionne a merveille mais recharger la classe principale non modifiable je n'y arrive pas.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    Problème résolut, j'ai mis la Class test en Extends JPanel et rajouter JScrollpane en composant et ça fonctionne a merveille

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par unknoweb Voir le message
    La variable est static pour que je puisse la récupérer dans d'autre fonction static
    Ce qui donc est une mauvaise idée en soit.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par bouye Voir le message
    Ce qui donc est une mauvaise idée en soit.
    Si tu pouvais m'éclairer pour ma gouverne. Pourquoi ce serrait une mauvaise idée étant donnée que je n'ai pas le choix sinon il me la récupère pas

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Parce que, outre la mauvaise conception et des soucis potentiels de sécurité ou de fuite mémoire, si jamais tu dois être amené a créer / gérer 2 instances de ta classe, ça va être littéralement le bordel. Bref, les variable statiques ne sont pas faites pour ce genre de choses.

    Quand a l’accès, et bien il me semble que j'ai pu contourner le soucis de manière correcte dans mon code.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de refresh sur une DBGrid
    Par lidouka dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/12/2005, 17h12
  2. [JScrollPane] Problème avec la taille du composant interne
    Par wikers dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/09/2005, 15h03
  3. [TColorBox] : problème de refresh
    Par PpPool dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/08/2005, 11h09
  4. [Jtree][JScrollPane] problème de positionnement
    Par billynirvana dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 07/07/2005, 16h53
  5. [JScrollPane] Problème d'agencement
    Par JAVA man dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 16/08/2004, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo