[débutant]avoir un design simplifier et sobre
Du code vaut mieux de 100 000 discours
Ma JFrame contient 1 JPanel (PanelGlobal)
Ce panel Global contient 2 JPanels (HautFrame et BasFrame)
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
|
/**
* MaFrame.java
* La fenetre Principale de l'application.
*/
public class MaFrame extends JFrame{
/** --- Attributs statiques --- */
/** L'instance de la fenetre elle meme */
private static MaFrame maFrame;
/* --- Attributs --- */
/** Les panels*/
private JPanel panelGlobal = new JPanel();
/** Le panel de la partie du bas. */
private HautFrame hautFrame;
/** Le panel de la partie du haut. */
private BasFrame basFrame;
/** Le menu de la fenetre. */
private MenuFenetre menuFenetre;
/* --- Constructors --- */
/**
* Crée une nouvelle instance de la fenetre.
*/
private MaFrame(){
super("DI manager");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/* --- Accessors --- */
public HautFrame getHautFrame(){return hautFrame;}
public BasFrame getBasFrame(){return basFrame;}
/* --- Methods statiques --- */
/**
* Permet de récupérer la fenêtre, au premier appel crée celle-ci, sinon
* retourne elle-meme.
* @return La fenetre Principale : MaFrame.
*/
public static MaFrame getMaFrame() {
if (maFrame == null) {
maFrame = new MaFrame();
}
return maFrame;
}
/** --- Methodes --- */
/**
* Initialise les menu, le contenu de la fenetre, le timer...
*/
public void init(){
/* initialisation du Timer*/
new BoucleDeLecture();
/* initialisation du menu*/
menuFenetre = new MenuFenetre();
setJMenuBar(menuFenetre); //on insére les Menus
/*Initialisation du layout*/
getContentPane().setLayout(new BorderLayout());
panelGlobal.setLayout(new BorderLayout());
Border raisedbevel = BorderFactory.createRaisedBevelBorder();
Border loweredbevel = BorderFactory.createLoweredBevelBorder();
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
resizeFrame();
}
});
JDesktopPane desktop = new JDesktopPane();
desktop.setPreferredSize(new Dimension(800, 600)) ;
desktop.setDesktopManager(new ImmobileDesktopManager());
desktop.setBackground(new Color(255,255,255));
/*fenetre du haut*/
hautFrame = new HautFrame();
desktop.add(hautFrame);
/*fenetre du bas*/
basFrame = new BasFrame();
desktop.add(basFrame);
panelGlobal.add(desktop,BorderLayout.CENTER);
getContentPane().add(panelGlobal,BorderLayout.CENTER);
/*barre d'état */
JPanel barreEtat = new JPanel();
barreEtat.setBorder(BorderFactory.createCompoundBorder(raisedbevel, loweredbevel));
getContentPane().add(barreEtat,BorderLayout.PAGE_END);
pack();
}
public void resizeFrame() {
int width = panelGlobal.getSize().width;
int height = panelGlobal.getSize().height;
hautFrame.setSize(width,height/2);
hautFrame.setLocation(0,0);
basFrame.setSize(width,height/2);
basFrame.setLocation(0,height/2);
}
} |
un de mes panels (HautFrame)
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
|
public class HautFrame extends JPanel{
private JTabbedPane tabbedPaneHaut =new JTabbedPane();
private HashMap maHashMap = new HashMap();
private HashMap hashMap = new HashMap();
private DiTable tableau;
public HautFrame() {
super();
setLayout(new BorderLayout());
setBackground(new Color(255,255,255));
});
add (tabbedPaneHaut,BorderLayout.CENTER);// ajout du Tabbed Pane
setVisible(true);
}
/**
* Méthode qui parmet d'ajouter un tabbedPane (Onglet)
* @param file
* @param nomFichierOuvert
*/
public void ajoutTabbed(String file, String nomFichierOuvert){
tableau = new DiTable(file);//ajout du JTable
tabbedPaneHaut.addTab(nomFichierOuvert, tableau);
}
} |
1) lorsque je redimensionne ma JFrame les panels HautFrame et BasFrame ne suivent pas. avant les Jpanel j'utiliser des JIntenalFrame pour HautFrame et BasFrame et ça fonctionnait bien
2)Avez vous une idée pour simplifier mon ui? je trouve que j'ai beaucoup de chose imbriqué pour pas grand chose
Le but c'est d'avoir 2 TabbedPane l'un au dessus de l'autre dans un design sobre type ecplise
merci pour votre aide et vos conseils