Superposition d'éléments dans un objet graphique étendant un JDialog
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 :
http://data.imagup.com/10/1138712307.png
La partie du code ou se trouve le probleme :
Code:
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);
} |