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

Interfaces Graphiques en Java Discussion :

Modifier la taille de deux JPanel


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Modifier la taille de deux JPanel
    Bonjour à tous.

    Je débute en Java et j'ai commencé un projet de RPG.
    Là où j'ai besoin d'aide c'est pour l'inventaire, j'ai les deux tableaux (armes, armures) mais il y a un espace à droite.
    Je vous joins mon code ainsi qu'un photo pour que vous puissiez vous rendre compte du probleme.

    Merci d'avance

    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
    public class PanelInventaire extends JPanel{
     
    	private JTable tableArme;
    	private String [] nomsColArmes = {"Nom de l'arme", "Dégats", "Maniablité"};
    	private String [][] dataArmes = {{"test","test2","test3"},{"gre","greqgre","resg"}};
     
    	private JTable tableArmure;
    	private String [] nomsColArmures = {"Nom de l'armure", "Défense", "Encombrement", "Solidité"};
    	private String [][] dataArmures = {{""}};
     
    	public PanelInventaire (){
    		super();
    		init();
     
    	}
     
    	private void init(){
    		JPanel pan = new JPanel(new GridLayout(1,2));
    		JPanel panArme=new JPanel(new BorderLayout());
    		JPanel panArmure= new JPanel(new BorderLayout());
     
     
    		panArme.setBorder(BorderFactory.createTitledBorder("Armes"));
    		DefaultTableModel modelArmes = new DefaultTableModel (dataArmes, nomsColArmes);
    		tableArme = new JTable(modelArmes);
     
     
    		panArmure.setBorder(BorderFactory.createTitledBorder("Armures"));
    		DefaultTableModel modelArmures = new DefaultTableModel (dataArmures, nomsColArmures);
    		tableArmure = new JTable(modelArmures);
     
     
    		JScrollPane conteneurArme = new JScrollPane(tableArme);
    		JScrollPane conteneurArmure = new JScrollPane(tableArmure);
     
    		this.add(pan);
    		pan.add(panArme);
    		pan.add(panArmure);
    		panArme.add(conteneurArme);
    		panArmure.add(conteneurArmure);
     
    		ajustement(tableArmure);
    		ajustement(tableArme);
     
    	}
     
    	private void ajustement(JTable table) {                                         
            int col = 0, droiteMax = 0, larg = 0, largTotal = 0,
                                        row = 0, tableX = 0, width = 0;
            JTableHeader header = table.getTableHeader();
            Enumeration columns = table.getColumnModel().getColumns();
     
            table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            while(columns.hasMoreElements()){                            // longueur maximum du texte ou du titre d'une colonne
                TableColumn column = (TableColumn)columns.nextElement();
                col = header.getColumnModel().getColumnIndex(column.getIdentifier());
                width = (int)table.getTableHeader().getDefaultRenderer()
                        .getTableCellRendererComponent(table, column.getIdentifier()
                                , false, false, -1, col).getPreferredSize().getWidth();
                for(row = 0; row<table.getRowCount(); row++){
                    int preferedWidth =
                            (int)table.getCellRenderer(row, col).getTableCellRendererComponent(table,
                            table.getValueAt(row, col), false, false, row, col).getPreferredSize().getWidth();
                    width = Math.max(width, preferedWidth);
                }
                header.setResizingColumn(column);                       // this line is very important
                larg = width+table.getIntercellSpacing().width;
             //   larg = (larg*13)/10;                            // largeur de la colonne plus un peu pour desserrer
                larg = larg+20;           // mais c'est mieux un ajout fixe, pas en %, 
                                             // par ex. un blanc devant et derrière chaque donnée avant de l'écrire
                largTotal += larg;                                  // largeur totale de la table si utile 
                column.setWidth(larg);
            } 
    }
     
    }
    Nom : Capture d’écran (75).png
Affichages : 353
Taille : 133,9 Ko

  2. #2
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Salut Von_Kavalier,

    Je ne sais pas si j'ai bien compris ta préoccupation. . Le problème vient de la classe PanelInventaire.
    Afin de pouvoir éliminer l'espace à droite du panneau armure, tu pourrais changer le gestionnaire de mise en forme
    de celui-ci en ajoutant ceci dans le constructeur ou dans la méthode init() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      FlowLayout fl = new FlowLayout(FlowLayout.RIGHT); /*Les deux tableaux s'alignent à droite et l'espace de gauche s'élargit*/
      this.setLayout(fl);
    J'apprend à pêcher comme toi !
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

Discussions similaires

  1. Pb de taille dans deux JPanel d'un même JFrame
    Par harmonips dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 20/02/2011, 12h21
  2. modifier la taille de jpanels
    Par Kobe70 dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 22/07/2008, 14h45
  3. modifier la taille d'un JPanel
    Par Asmod_D dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/04/2007, 15h12
  4. JPanel contenant deux JPanel definir taille de l un d eux
    Par mereyj dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/06/2005, 21h40
  5. [jpanel] Modifier la taille...
    Par scorpiwolf dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 01/07/2004, 17h11

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