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

Agents de placement/Fenêtres Java Discussion :

jscrollpane jpanel freelayout


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut jscrollpane jpanel freelayout
    Bonjour à tous...

    Je sais bien que ça peut paraître évident pour certain, mais pour moi ça ne marche pas et je vois pas pourquoi...

    j'ai (quasi) fini mon appli mais elle dois marcher aussi (pas prévu au début) sur des portables et je voudrais donc faire que les vues soient scrollables...

    J'ai pour chaque vue un jpanel de fond en null layout (c'est comme ça que j'ai appris...).
    Je travail sous netbeans et je fais a chaque fois un "Generate Resize Code" pour ma fenetre...

    J'ai beau mettre un jscrollpane avant mon premier jpanel, bin ça scroll rien...
    Partout ou j'ai regardé c'est pas avec des freelayout et c'est avec des "pack()"...

    je mets un exemple de code de vue qui scroll pas pour être plus explicite...

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    public class ImpressionProgrammesVisites extends javax.swing.JFrame {
     
        public ImpressionProgrammesVisites(int idcollab) {
            initComponents();
            jPanelcontientimpression = new javax.swing.JPanel();
            jPanelcontientimpression.setBackground(new java.awt.Color(255, 255, 255));
            jPanelcontientimpression.setLayout(null);
            jPanelcontientimpression.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
            jPanelcontientimpression.setBounds(0, 0, 630, 1540 * indicemax);
            jLentetede = new JLabel[indicemax];
            ...
            jLcommentaire = new JLabel[indicemax];
            jScrollPanenotebien = new JScrollPane[indicemax];
            jScrollPanenotecollab = new JScrollPane[indicemax];
            jTextAreanotebien = new JTextArea[indicemax];
            jTextAreanotecollab = new JTextArea[indicemax];
     
            for (int i = 0; i < indicemax; i++) {
                jLentetede[i] = new JLabel();
                ...
                jLcommentaire[i] = new JLabel();
                jScrollPanenotebien[i] = new JScrollPane();
                jScrollPanenotecollab[i] = new JScrollPane();
                jTextAreanotebien[i] = new JTextArea();
                jTextAreanotecollab[i] = new JTextArea();
                jLentetede[i].setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
                jLentetede[i].setText("De: " + moncmg.getPrenomCMG() + " " + moncmg.getNomCMG());
                ...
                jLcommentaire[i].setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
                jLcommentaire[i].setText("Commentaires");
                jTextAreanotebien[i].setText(maselection[i].getCommentaires());
                jTextAreanotecollab[i].setText(maselection[i].getNotesPourCollaborateurs());
                int x = 5;
                int x2 = 300;
                int y = 5;
                int lg = 295;
                int h = 20;
                jLentetede[i].setBounds(x, y + 1540 * i, lg * 2, h);
                y += h + 5;
                jTextAreanotebien[i].setColumns(10);
                jTextAreanotebien[i].setRows(5);
                jTextAreanotebien[i].setLineWrap(true);
                jScrollPanenotebien[i].setViewportView(jTextAreanotebien[i]);
                jScrollPanenotebien[i].setBounds(x, y + 1540 * i, lg * 2, 170);
                y += 170 + 5;
                jLcommentaire[i].setBounds(x, y + 1540 * i, lg, h);
                y += h + 5;
                jTextAreanotecollab[i].setColumns(20);
                jTextAreanotecollab[i].setRows(5);
                jTextAreanotecollab[i].setLineWrap(true);
                jScrollPanenotecollab[i].setViewportView(jTextAreanotecollab[i]);
                jScrollPanenotecollab[i].setBounds(x, y + 1540 * i, lg * 2, 85);
                jPanelcontientimpression.add(jLentetede[i]);
                jPanelcontientimpression.add(jLcommentaire[i]);
                jPanelcontientimpression.add(jScrollPanenotebien[i]);
                jPanelcontientimpression.add(jScrollPanenotecollab[i]);
            }
            jPanelafficheecran.add(jPanelcontientimpression);
        }
     
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
     
            jScrollPane3 = new javax.swing.JScrollPane();
            jPanelafficheecran = new javax.swing.JPanel();
            jScrollPane2 = new javax.swing.JScrollPane();
            jTextArea1 = new javax.swing.JTextArea();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
            setTitle("Vérification avant impression programme de visite");
            getContentPane().setLayout(null);
     
            jPanelafficheecran.setBackground(new java.awt.Color(255, 255, 255));
            jPanelafficheecran.setLayout(null);
     
            jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
     
            jTextArea1.setColumns(20);
            jTextArea1.setEditable(false);
            jTextArea1.setFont(new java.awt.Font("Verdana", 0, 12)); // NOI18N
            jTextArea1.setLineWrap(true);
            jTextArea1.setRows(5);
            jTextArea1.setText("Vérification et modification    des notes et commentaires.");
            jScrollPane2.setViewportView(jTextArea1);
     
            jPanelafficheecran.add(jScrollPane2);
            jScrollPane2.setBounds(730, 30, 190, 60);
     
            jScrollPane3.setViewportView(jPanelafficheecran);
     
            getContentPane().add(jScrollPane3);
            jScrollPane3.setBounds(0, 0, 1000, 700);
     
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-1022)/2, (screenSize.height-808)/2, 1022, 808);
        }// </editor-fold>
     
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
     
                public void run() {
                    new ImpressionProgrammesVisites().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify
        private javax.swing.JPanel jPanelafficheecran;
        private javax.swing.JScrollPane jScrollPane2;
        private javax.swing.JScrollPane jScrollPane3;
        private javax.swing.JTextArea jTextArea1;
        // End of variables declaration
    }
    Faut-il que ma class extend jPanel pour que ça marche ???
    En fait faut-il que je change beaucoup de chose pour que cela fonctionne ou y a t'il une solution plus simple qui m'aurait échapée???

    Merci d'avance de vos conseils

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah fallait pas faire de NullLayout .
    C'est typiquement le layout qui fout le bordel avec les JScrollPane.

    Grosso merdo il faut que le composant qui est contenu dans le JScrollPane ait une preferredSize égale à sa taille de Bounds.

    Mais bon je te conseille plutôt de te mettre à des vrais layouts comme le FormLayout ou le MigLayout que de rester à cette Horreur avec un graned H qu'est le NullLayout(aka FreeLayout).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    oki je modifie tout ça demain et je vous dis quoi...

    Merci bien.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    bon, j'ai opté pour un "free disign" sous netbeans qui correspond a un grouplayout.
    Ca va me permettre de deplacer mes composants manuellement.
    Et je vais definir les dimenssions de ma frame en fonction de la taille de l'écran...

    Merci bien pour ces conseils qui me permettent d'améliorer ma façon de coder...
    Je regarderais pour l'appli suivante de plus pres tes FormLayout et MigLayout.

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

Discussions similaires

  1. JScrollPane, JPanel et KeyListener
    Par Patrice Henrio dans le forum Composants
    Réponses: 2
    Dernier message: 05/09/2013, 08h36
  2. Double JscrollPane (JPanel + JTextArea)
    Par movrack dans le forum Composants
    Réponses: 1
    Dernier message: 09/05/2011, 15h49
  3. JScrollPane(JPanel) - scroll inactif
    Par Ceubex dans le forum Composants
    Réponses: 13
    Dernier message: 13/04/2011, 15h16
  4. Déplacement avec la souris dans un JScrollPane/JPanel
    Par deadstar62 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 27/04/2007, 17h10
  5. JScrollPane + JPanel: Redimension inopérante
    Par lionrouge dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/06/2006, 11h09

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