Panel graphique visible

moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004 - 31 mai 2004 à 16:43
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 2 juin 2004 à 12:16
bonjour,

je voudrais utiliser un composant avec une bordure exterieur dans lequel je peu inserer des composants, mais je ne sais pas quel composant utiliser, je voudrais que ca ressemble a celui de Frame sur vb. J'attend votre aide accompagné d'un petit exemple de code source.

merci pour votre aide

19 réponses

safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
31 mai 2004 à 17:14
c'est Frame aussi en Java, ou plus developpé le JFrame:
il existe pa mal d'exemples de codes complet pour des projet réalisés a base de Frame sur ce site.
l'exemple suivant pe te donner une idée (doit etre dans un fichier MaClasse.java")

import javax.swing.*;


class MaClasse extends JFrame{
MaClasse(String titre){
super(titre);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
JPanel p=new JPanel();
getContentPane.add(p);
p.add(new JButton("bouton"));
p.add(new JLabel("Label"));
p.add(new JTextField("zone Text"));
show();
}
public Static void main(String [] args){
new MaClasse("essai");
}
}
0
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
31 mai 2004 à 17:30
Ah je me rappèle de frame en VB ce que je t'ai donné c'est Forme en VB.
Alors pour Frame il y a JPanel tu pe l'utiliser avec des Bordures pour qu'il soit limité. et tu pourra l'inserrer dans un container (Applet, Canvas, Panel,...) qui est divisé avec un Layout Manager.

JPanel p=new JPanel();
p.setBorder(new LineBorder(Color.blue,1,true));


si tu ve pas de couleur pour le Border tu met null à la place de Color.X
0
moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004
31 mai 2004 à 23:15
merci c ce que je cherchais :)
mais en plus si tu peu encore y ajouter un effet 3d un peu comme sur les app windows je prend.
0
moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004
31 mai 2004 à 23:25
c bon g trouvé ...... avec un Color.WHITE on retrouve presque le meme effet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004
31 mai 2004 à 23:33
me voila face a un nouveau pb :
lorsque je met un JPanel dans un autre et que tous les 2 ont une bordure les lignes se supperpose je voudrais qu'il reste une petite marge..... comment peut -on le faire ?
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 juin 2004 à 00:17
hello,

Utilise les layout de tes conteneurs qui permettent de dimensionner et de placer automatiquement tes composants selon le type du layout ou alors initialise les layout de tes conteneurs à null et place toi même tes composant a l'endroit que tu veux avec les dimensions que tu veux

Watts mille exemples sont présents sur le site
0
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
1 juin 2004 à 11:07
Il est déconseillé de travailler sans Layout Manager, pourtant tous les constructeurs des Layouts prennent en argument des valeus pour l'espacement des objets. exemple
0
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
1 juin 2004 à 11:11
new BorderLayout(20,10) donne un espacement horizontale de 20 points elntre les objets et de 10 verticalement.
0
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
1 juin 2004 à 18:38
pour ton premier problème tu pourras mettre null à la place de la couleur.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 juin 2004 à 19:34
juste un details ki me turlupine qd tu parle de Frame comme celle de vb TOI le mot Frame tu l'attribut a koi? a la frame vb qui est un conteneur ou tu parle de la fenetre?????
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 juin 2004 à 19:50
Parce que si tu parle bien du conteneur vb et non d'une fenêtre utilise javax.swing.BorderFactory(tu peu l'utiliser pour les composants swing)

Exemple créer un composant swing et a setBorder attribut lui ça

composantSwing.setBorder(BorderFactory.createEtchedBorder());

Jette un oeil sur ce lien aussi
http://www.javafr.com/forum.v2.aspx?ID=234561
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 juin 2004 à 19:53
hey pk je ne vois le post de safisoft(31/05/2004 17:30:18) seulement la grrrrrrrrrrrr
0
moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004
1 juin 2004 à 20:56
je parlais bien du conteneur
0
moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004
1 juin 2004 à 21:09
le (BorderFactory.createEtchedBorder()); fonctionne mais avec le setLayout(new BoderLayout(30, 30)) la bordure n'est pas décalée :(
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
1 juin 2004 à 21:32
je t fai un exemple vite fais mais qui fonctionne

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * Title: 

 * Description: 

 * Copyright: Copyright (c) 2004

 * Company: 

 * @author not attributable
 * @version 1.0
 */

public class Frame1 extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout(90,90);
  JButton jButton1 = new JButton();
  JButton jButton2 = new JButton();
  JButton jButton3 = new JButton();

  //Construct the frame
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    this.setSize(new Dimension(400, 300));
    this.setTitle("Frame Title");
    contentPane = (JPanel) this.getContentPane();
    jButton1.setBorder(BorderFactory.createEtchedBorder());
    jButton1.setText("jButton1");
    contentPane.setLayout(borderLayout1);
    jButton2.setBorder(BorderFactory.createEtchedBorder());
    jButton2.setText("jButton2");
    jButton3.setBorder(BorderFactory.createEtchedBorder());
    jButton3.setText("jButton3");
    contentPane.add(jButton1,  BorderLayout.EAST);
    contentPane.add(jButton2, BorderLayout.CENTER);
    contentPane.add(jButton3, BorderLayout.WEST);
  }
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }
}
0
moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004
1 juin 2004 à 23:21
bon encore un ptit pb si ca vous ennuie pas trop j'ai besoin d'ecrire dans un JFrame des chaines de caracteres une en dessous des autres (avec des JLabel).

une solution était de creer un JPanel en GridLayout(0, 1) et d'y inserer des JLabel avec la méthode add, mais il me faut a chaque ligne que j'instancie un nouveau JLabel et autant de fois de JLabel pour chaque ligne ...

ma 2eme solution est d'utiliser un JOptionPane avec a l'interieur un JLabel et la je peu utiliser les sauts de lignes "\n" dans le texte de mon label pour retourner a la ligne mais le JOptionPane est très limitée et je voudrais une solution pour un JFrame.

merci encore
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 juin 2004 à 01:16
il est ou le prob pour tes label à instancier à chaque fois????

tu creer un tableau de label

JLabel [] lbl = new JLabel [5];
String [] szlbl = { "textLabel1", ...., "textLabeln" };

for(int i = 0; i<lbl.length; i++){
lbl[i] = new JLabel(szlbl[i]);
...
//declaration commune aux label
...
conteneur.add(lbl[i]);
}
0
moffer Messages postés 49 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 2 juin 2004
2 juin 2004 à 07:50
tnrv po je voulai juste savoir si y avait plus optmisé qeu faire ca :)
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 juin 2004 à 12:16
tinkiete suis zen :big)
0
Rejoignez-nous