Bonjour,
Lorsque je demande à affcher une grille dans un JLabel alors qu une autre grille y était déjà affichée, elle s affiche quelques secondes puis disparait pour laisser la place à l ancienne grille. Je ne comprend pas ce qui se passe...
Merci
Bonjour,
Lorsque je demande à affcher une grille dans un JLabel alors qu une autre grille y était déjà affichée, elle s affiche quelques secondes puis disparait pour laisser la place à l ancienne grille. Je ne comprend pas ce qui se passe...
Merci
En fait la deuxieme grille que je veux afficher se retrouve en dessous de l autre, voici un bout de code:
Merci
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 public void init_main() { selected_fields = new ArrayList<String>(); selected_fields = choice.get_fields().get_selected_fields(); if (choice.get_menu().compareTo("orders")==0){ /* affichage de la grille des ordres */ grid = new ui_OrdersGrid(this); /* on grise le menu search des replies */ orders_search.setEnabled(true); replies_search.setEnabled(false); this.setVisible(true); } else if (choice.get_menu().compareTo("replies")== 0){ /* affichage de la grille des replies */ grid2 = new ui_RepliesGrid(this); /* on grise le menu search des orders */ replies_search.setEnabled(true); orders_search.setEnabled(false); this.setVisible(true); }
C'est pas non plus avec ça qu'on va pouvoir t'aider...![]()
Montre-nous le code où tu dessines tes grilles et celui où tu décides laquelle doit être tracée.
Voici le code de mon constructeur OrdersGrid:
et voici comment je remplis ma grille:
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 public ui_OrdersGrid(ui_Main main) { main_frame = main; progress_bar = new ui_ProgressBar(); bar= progress_bar.get_progressBar(); progress_val = 2; bar.setValue(progress_val); orders_matrix = new ArrayList<ArrayList<String>>(); // lancement du parsing des fichiers launch_parsing(); set_orders_title("ORDERS TABLE"); main_frame.getContentPane().add(title_panel, BorderLayout.NORTH); bar.setValue(95); main_panel = new JPanel(); names_panel = new JPanel(); // renseignement de la grille des ordres fill_grid_by_col(); //progress_val = 99; bar.setValue(99); // reglage des tailles des fenetres resize_frame(); scrollPane = new JScrollPane(); scrollPane.setViewportView(main_panel); scrollPane.setColumnHeaderView(names_panel); main_frame.getContentPane().add(scrollPane, BorderLayout.CENTER); //main_frame.getContentPane().add(names_panel, BorderLayout.SOUTH); progress_bar.dispose(); main_frame.setVisible(true); }
Mes deux grilles sont faites de la meme manière.
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 public void fill_grid_by_col() { String elmt = null; int length = orders_matrix.get(0).size(); labels_vector = new ArrayList<JLabel>(); // creation de la grille colonne par colonne for(int i=7; i<selected_fields.size(); i++) { // on va stocker la largeur de la colonne int w = 0 ; col_panel = new JPanel(); col_panel.setBackground(Color.white); col_panel.setLayout (new GridLayout(length, 1)); col_names_panel = new JPanel(); col_names_panel.setBackground(Color.white); col_names_panel.setLayout (new BorderLayout()); // recuperation des valeurs correspondant a ce champ ArrayList<String> col = orders_matrix.get(i); // initialisation du temp_label0 (pour le titre dans le main_panel) temp_label0 = new JLabel(); for(int j=0; j<length; j++) { // recuperation de l'element elmt = col.get(j); // creation d'un label avec cet element temp_label = new JLabel(elmt, JLabel.RIGHT); // je sauvegarde le label a afficher : sert pour gerer les evenements de clics de souris labels_vector.add(temp_label); if((j != 0) && !elmt.equals(" - ")){ this.add_listeners(temp_label); temp_label.setToolTipText(col.get(0)); } font = temp_label.getFont(); index_font = new Font("TimesRoman"/*font.getName()*/, Font.BOLD, font.getSize()+ 5); /* Pour afficher une ligne sur 2 d'une couleur differente*/ if(j%2 != 0) { temp_label.setForeground(Color.blue); } else { /* couleur = vert fonce */ temp_label.setForeground(new Color(0,153,0)); } // je mets la largeur à jour if (w < temp_label.getPreferredSize().width){ w = temp_label.getPreferredSize().width ; } /* je donne des proprietes differentes a la ligne des noms des champs pour la distinguer des autres */ if(j==0) { // creation d'un label name avec cet element temp_name_label = new JLabel(elmt); temp_label.setFont(index_font); temp_name_label.setFont(index_font); temp_label.setHorizontalAlignment(JLabel.CENTER); temp_name_label.setHorizontalAlignment(JLabel.CENTER); // je suis obligée de rentrer quand même cette ligne (nom de champ) dans ma colonne pour que la // largeur s'ajuste bien mais comme je l'ai déjà dans mon entête, je la mets invisible et à la fin temp_label.setVisible(false); temp_label0 = temp_label; } else { col_panel.add(temp_label); } // je rajoute la ligne de noms à la fin if (j==length-1){ col_panel.add(temp_label0); } } // je regle la taille de mes labels de titres et je construis mon panel colonne titres : // les noms des champs et les colonnes des champs doivent avoir la même largeur // la largeur du main_panel n'est pas toujours assez large => utilisation de w // (bizarre d'ailleurs vu qu'on inclut dans la colonne le nom du champs) Dimension dav; dav=temp_name_label.getPreferredSize(); if (w < dav.width) { w = dav.width; } temp_name_label.setMinimumSize(new Dimension(w, dav.height)); temp_name_label.setPreferredSize(new Dimension(w, dav.height)); col_names_panel.add(temp_name_label); // j'inclus mes panels colonnes dans mes panels de titres et de donnees main_panel.add(col_panel); names_panel.add(col_names_panel); } }
Je choisis la grille que je veux afficher en fonction du menu choisi( le bout de code que je vous ai envoyé au début)
J'espère que je vous ai éclairés
Merci
Partager