Questions sur swing, awt, ... Jscrollpane, voir 7 ème post

Questions sur swing, awt, ... Jscrollpane, voir 7 ème post - Java - Programmation

Marsh Posté le 07-02-2008 à 21:29:42    

Bonjour, dans le cadre d'un travail de fin d'année en 3 iem bac, je dois réaliser un éditeur de carte 2D (à base d'hexagone) en java.
Comme je n'ai jamais rien réalisé en java en dehors d'un cours sur l'orienté objet qui utilisait le java pour imager, j'ai quelques questions, notamment avec les librairies que je ne connais pas.
 
Pour mon programme, je pars dans l'idée d'utiliser awt pour la partie qui affiche la carte, et swing pour les 2 menus.
J'utiliserais la jframe pour faire la fenêtre principale, et dedans, deux menu qui ont une postion fixe.
Pour ma fenêtre principale avec la jframe ça marche, mais pour les menus je bloque.
 
1) Le JPanel peut-il faire l'affaire pour les menus ?
2) JFrame_global.getContentPane().add(JPanel_menu); : c'est la bonne requette pour contraindre (commencer dumoins) mon menu dans la JFrame ?
3) Je n'arrive pas a attribuer une couleur à mon JPanel avec setBackground(color), eclipse m'indique que la couleur (green, (1,1,1), ...) n'est pas définie pour ma Jpanel, pourquoi ?
 
Merci d'avance pour les réponses à ces questions qui ne seront surement pas les dernière.
 
Simon


Message édité par Siron le 18-02-2008 à 12:54:04
Reply

Marsh Posté le 07-02-2008 à 21:29:42   

Reply

Marsh Posté le 07-02-2008 à 22:03:43    

Pour la couleur j'ai trouvé : Color.green.
Mais pour la JFrame elle reste grise, sauf si je la redimentionne, alors la j'ai de bref instant les bords dans la couleur choisie.

Reply

Marsh Posté le 08-02-2008 à 21:31:33    

Bon, comme je vois que mon topic à pas beaucoup de succès et que j'ai +- trouvé réponses à mes questions, je vais relancer sur d'autres questions plus basique :  
 
--------
|   c    |
--------
|  a | b|
--------
 
Voila ce que je veux faire +-, un menu C d'une ligne, puis une fenêtre de travail a et un autre menu en hauteur b.
La fenêtre global serait redimentionable, mais les menus resterait en position fixe de taille fixe :
Puis je me passer des layout pour ce genre de chose, ou ce sera plus simple avec ?
Pour c et b, un JPanel vous semble adéqua ?

Reply

Marsh Posté le 09-02-2008 à 00:51:08    

Pour ta dernière question d'hier (ha ben non finalement, avant hier :D) : ne rend ta fenêtre visible (par un setVisible(true)) qu'une fois qu'elle est construite. En clair, on remplit souvent sa fenêtre dans le constructeur. Si c'est ton cas, ne fais pas le setVisible dans le constructeur, mais dans le code qui crée la fenêtre, juste après qu'il l'a créée. Tu verras plein de petits effets désagréables du même genre disparaître...
 
Pour les questions de ton dernier post : pour disposer les différents éléments dans ta fenêtre, utiliser un Layout est toujours plus simple. Ne pas utiliser de Layout implique d'avoir des fenêtres non redimensionnables ; et en pratique, ce genre de fenêtres, c'est très souvent la plaie à utiliser (hélas, c'est fréquent sous Windows !)
edit> Dans le cas présent, BorderLayout semble avoir été écrit pour toi !  
 
Pour le contenu de C et de B, faut-il un JPanel ? Reformulons la question : chacune de ces zones est-elle elle-même composée de plusieurs objets ? Si oui, il te faut un conteneur pour les rassembler, et JPanel sert justement à ça. Si non, ben... non. Pas besoin : s'il n'y a qu'un objet à rassembler, il se rassemble déjà tout seul, inutile de le mettre dans un JPanel dédié.


Message édité par BifaceMcLeOD le 09-02-2008 à 00:52:05
Reply

Marsh Posté le 09-02-2008 à 13:37:25    

Merci pour t'es réponse, je vais testé un peu tout ça avant la prochaine valse de questions probables qui en découlera  :jap: .

Reply

Marsh Posté le 09-02-2008 à 21:33:50    

J'ai appliqué un BorderLayout, ça marche impec.

 

Pour la partie a je compte utiliser le canvas, et pous faire les hexagones, des objets Polygone, ça vous semble une bonne idée ?

 

J'aimerais donner au canvas la taille de la fenêtre principale - celle du menu b, mais je n'arrive pas à récuperer cette taille :

Code :
  1. Canvas.setSize(fenetreP.getWidth(), 50);

ne marche pas.  Si je comprend bien c'est parceque cette hauteur n'est pas fixe (vu que on peut redimensionner la fenêtre), comment puis-je malgré tout y arriver ?


Message édité par Siron le 11-02-2008 à 11:28:21
Reply

Marsh Posté le 18-02-2008 à 12:52:11    

J'ai un nouveau problème, cette fois avec JScrollPane.
 
 
http://www.irision.net/temp/editeur1.jpg
 
J'ai mis un canvas (Visual, sur l'image la partie avec tous les polygones) dans un jscrollpane (Visuscr).
Le problème : le canvas, quand je le scrolls, recouvre les menus, voir même les barres de scrolling, on le voit en 1 sur l'image, le "menu" du haut (rectangle gris foncé qui devrait être aussi large que la fenêtre) est recouvert par le canvas que j'ai scrollé vers le bas.
Voici le code qui initialise les composents :

Code :
  1. Global fenetre = new Global();
  2.    Visual Visual = new Visual();
  3.    JScrollPane Visuscr = new JScrollPane(Visual);
  4.    Menu_droite Menu_droite = new Menu_droite();
  5.    Menu_droite.setMinimumSize(new Dimension(100, 0));
  6.    Menu_droite.setPreferredSize(new Dimension(100, 0));
  7.    Menu_haut Menu_haut = new Menu_haut();
  8.    Menu_haut.setMinimumSize(new Dimension(0, 30));
  9.    Menu_haut.setPreferredSize(new Dimension(0, 30));
  10.    fenetre.add(Visuscr, BorderLayout.CENTER);
  11.    fenetre.add(Menu_droite, BorderLayout.LINE_END);
  12.    fenetre.add(Menu_haut, BorderLayout.BEFORE_FIRST_LINE);
  13.    Visuscr.setWheelScrollingEnabled(true);
  14.    fenetre.setVisible(true);
  15.    Visual.paint(Visual.getGraphics());


 
Comment puis-je résoudre le problème ?


Message édité par Siron le 18-02-2008 à 12:55:57
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed