Bonjour,
Suite au developpement d'un soft pour une entreprise, je suis confronte a un probleme tout bete :
Sur un FileChooser, lorsque je déroule la ComboBox des extensions, les lignes de la cmb qui sont en superposition avec un composant (Label) ajouté en dessous de cette meme fenetre FileChooser sont occultés.
Lorsque je modifie la taille de la fenetre manuellement et que je refais l'essai, le probleme disparait et le composant du FileChooser est dessiné sur les autres.
Une image du probleme :
La partie du code ou se trouve le probleme :
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 package impsa.engine2D.view; import java.awt.Dimension; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; import java.util.Vector; import impsa.inputOutput.file.FileReader; import impsa.main.Constants; import impsa.main.Extension; import impsa.main.Globals; import impsa.tools.file.ExtensionFileFilter; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.border.EtchedBorder; import javax.swing.border.TitledBorder; public class VOpenTableDial extends JDialog implements ActionListener, PropertyChangeListener { /** * */ private static final long serialVersionUID = 1L; // private JLayeredPane layaredPane = new JLayeredPane(); private JFileChooser fileChooser = new JFileChooser(); private JPanel optionPane = new JPanel(); private TitledBorder optionBorder; private Label lblSheet = new Label("Workbook sheet : "); private Label lblColumnsLine = new Label("Line where table start (columns title) : "); private JComboBox cmbSheet = new JComboBox(); private DefaultComboBoxModel cmbSheetModel = new DefaultComboBoxModel(); private JComboBox cmbColumsLine = new JComboBox(); private DefaultComboBoxModel cmbColumnModel = new DefaultComboBoxModel(); private boolean showXlsSheet; private Vector<String> sheetNames = new Vector<String>(); private ArrayList<Vector<String>> columnsLine = new ArrayList<Vector<String>>(); private File returnValue; public VOpenTableDial(String titleFrame, File currentDirectory) { this.setModal(true); this.setTitle(titleFrame); fileChooser.addActionListener(this); fileChooser.addPropertyChangeListener(this); cmbSheet.addActionListener(this); cmbColumsLine.addActionListener(this); //Set object Action //... //Set object text //... //Set object specifications cmbSheet.setModel(cmbSheetModel); cmbColumsLine.setModel(cmbColumnModel); //fileChooser.setDialogType(JFileChooser.OPEN_DIALOG); for (Extension extension : Extension.values()) fileChooser.addChoosableFileFilter(extension.getFileFilter()); fileChooser.setCurrentDirectory(currentDirectory); optionBorder = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "Option for XLS Table"); optionBorder.setTitleJustification(TitledBorder.LEFT); optionPane.setBorder(optionBorder); showXlsSheet = false; //... //Set object size this.setMinimumSize(new Dimension (480, 380)); this.setPreferredSize(getMinimumSize()); this.setResizable(true); fileChooser.setMinimumSize(new Dimension (480, 250)); fileChooser.setPreferredSize(fileChooser.getMinimumSize()); //... //Set object font //... //Add object to the layout optionPane.setLayout(new GridLayout(2,2)); optionPane.add(lblSheet); optionPane.add(cmbSheet); optionPane.add(lblColumnsLine); optionPane.add(cmbColumsLine); //... //Set user access if (Globals.LEVEL_USER == Constants.LEVEL_VIEWER){} //TODO : prohibit some admin access //... /* layaredPane.setLayout(new FlowLayout()); layaredPane.add(optionPane, JLayeredPane.DEFAULT_LAYER); */ this.add(fileChooser); this.add("South", optionPane); } public void paint(Graphics g) { super.paint(g); if (showXlsSheet) cmbSheet.setVisible(true); else cmbSheet.setVisible(false); }
Partager