Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : creation d'interface graphique en java [ Système / API ] (melianos31)

vendredi 21 juillet 2006 à 10:52:56 | creation d'interface graphique en java

melianos31

Bonjour.

Je développe en ce moment une interface graphique en java ( merci le tuto de tucobouch ), mais j'ai un petit probleme.

Si je met tout dans la classe Fenetre, et que mon main se contente de creer une Fenetre, tout va bien, affichage de la fenetre a l'écran, avec mes bontons, mes scrolls, etc...

Si je tente de mettre les differents Panel dans des classes differentes (car j'ai des Panels qui se répètent), et pour faciliter la relecture, ma classe fenetre veux bien ajouter toutes mes classes dans la fenetre, mais ceux-ci ne s'affiche pas à l'écran.
Avant tous les fichiers étaient dans le même package, mais ca ne marchait quand même pas.

Quelle est mon erreur ?
Je programme sous windows, avec eclipse 3.2, sans le VE (J'arrive pas a m'en servir :p )

classe TafelVisual, avec le main
////////////////////////////////////////////////////////////////////////////////
package main_window;
import javax.swing.JFrame;

import tafelComponents.*;

public class TafelVisual extends JFrame{

   
    private static final long serialVersionUID = 1L;

    public static void main(String[] args)
        {
            Fenetre fen = new Fenetre();
            StoffMenu menu1 = new StoffMenu();
            VariablenMenu menu2 = new VariablenMenu("Erste bekannte Variable");
            VariablenMenu menu3 = new VariablenMenu("Zweite bekannte Variable");
            EinorParButton menu4 = new EinorParButton();
           
           
           
            fen.setContentPane(menu1);
            fen.add(menu2);
            fen.add(menu3);
            fen.add(menu4);
            fen.setVisible(true);
        }


}

classe Fenetre
/////////////////////////////////////////////////////////////////////////////////////////////
package tafelComponents;

import javax.swing.*;


public class Fenetre extends JFrame {
    public StoffMenu menu1 = new StoffMenu();
   
    private static final long serialVersionUID = 1L;

    public Fenetre()
    {
        super("Interface für fluidp");
        this.setSize(300, 200);
       
        JPanel mainPanel=new JPanel();
        BoxLayout bl1 = new BoxLayout(mainPanel,BoxLayout.Y_AXIS);
        mainPanel.setLayout(bl1);
        this.add(menu1);
    }
  
   
}

classe VariablenMenu, un des Panels que je cherche à ajouter
///////////////////////////////////////////////////////////////
package tafelComponents;

import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class VariablenMenu extends JPanel{
    // This Panel allows you to say what fields you already know
    private static final long serialVersionUID = 1L;

    public VariablenMenu(String s){
        JPanel pan = new JPanel();
        BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
        pan.setLayout(bl);
       
        JLabel lab3 = new JLabel(s);
        pan.add(lab3);
        String c[] ={"Druck(in bar)","Temperatur(in K)","RHO( in ??)"};
        JComboBox cb = new JComboBox(c);
        pan.add(cb);
        pan.setVisible(true);
       
        JTextField tf = new JTextField();
        pan.add(tf);
       
    }

}


vendredi 21 juillet 2006 à 13:20:20 | Re : creation d'interface graphique en java

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

c'est pas la réponse mais public class TafelVisual extends JFrame{ c'est pas utile fais simplement public class TafelVisual{ vu que dans le main tu utilise une autre fenetre.

je ne pourrait te dire si il y a une erreur dans StoffMenu vu que l'on a pas le code.
pour VariablenMenu tu as oublié de rattacher ton panel à l'autre soit

    public VariablenMenu(String s){
        JPanel pan = new JPanel();
        BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
        pan.setLayout(bl);
       
        JLabel lab3 = new JLabel(s);
        pan.add(lab3);
        String c[] ={"Druck(in bar)","Temperatur(in K)","RHO( in ??)"};
        JComboBox cb = new JComboBox(c);
        pan.add(cb);
        pan.setVisible(true);
       
        JTextField tf = new JTextField();
        pan.add(tf);
        this.add(pan);
       
    }

perso je te conseil plutot de faire

    public VariablenMenu(String s){
        BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
        this.setLayout(bl);
       
        JLabel lab3 = new JLabel(s);
        this.add(lab3);
        String c[] ={"Druck(in bar)","Temperatur(in K)","RHO( in ??)"};
        JComboBox cb = new JComboBox(c);
        this.add(cb);      
        JTextField tf = new JTextField();
        this.add(tf);
    }

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

vendredi 21 juillet 2006 à 13:28:07 | Re : creation d'interface graphique en java

Twinuts

Membre Club Administrateur CodeS-SourceS
Perso je te conseil de sortir tes variables des constructeurs sourtout si dans le future tu as l'intention de les modifiers par le bia d'une autre classe


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

vendredi 21 juillet 2006 à 14:01:08 | Re : creation d'interface graphique en java

melianos31

Ca ne resoud pas le probleme, mais ca me permet d'écrire un code plus lisible, et vu que je devrais les modifier apres, merci pour l'info.

Apres remaniement, voila mon code ( a nouveau )
Les trois classes sont dans trois fichiers différents, et dans le même paquetage.

petite différence depuis ce matin :
apres de nombreuses manip, maintenant j'obtiens une fenetre vide, sans titre :'(

class TafelVisual
/////////////////////////////////////////////////////////////////////////////////////

package main_window;
import javax.swing.JFrame;

public class TafelVisual extends JFrame{

    private static final long serialVersionUID = 1L;

    public static void main(String[] args)
        {
            Fenetre fen = new Fenetre();
            fen.setVisible(true);
        }
}

class Fenetre
//////////////////////////////////////////////////////////////////////////////////////
package main_window;

import javax.swing.*;

public class Fenetre extends JFrame{
   
    private static final long serialVersionUID = 1L;
   
    public Fenetre()
    {
        super("Interface für fluidp");
        this.setSize(400, 200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
   
}

class StoffMenu
//////////////////////////////////////////////////////////////////////////////////////
package main_window;

import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JLabel;

public class StoffMenu extends JPanel{
   
    private static final long serialVersionUID = 1L;
   
    JPanel pan = new JPanel();
    BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
    JLabel lab = new JLabel("Gas studiert :");
    String c[] = {"H2","O2","N2","H2O","CH4"};
    JComboBox cb = new JComboBox(c);

    public StoffMenu(){
   
        pan.setLayout(bl);       
        pan.add(lab);
        pan.add(cb);
       
        this.setVisible(true);
        this.add(pan);
            
    }
   
}


vendredi 21 juillet 2006 à 14:04:08 | Re : creation d'interface graphique en java

melianos31

oups, j'avais oublie d'ajouter le StoffMenu, mais ca n'a rien change ( je le rajoute dans le constructeur de Fenetre)

vendredi 21 juillet 2006 à 14:23:42 | Re : creation d'interface graphique en java

Twinuts

Membre Club Administrateur CodeS-SourceS
Oki donc voici le code j'ai mis 2-3 commentaires


package main_window;

public class TafelVisual {
    public static void main(String[] args)
    {
        //pas utile pour juste afficher la fenetre
        //Fenetre fen = new Fenetre();
        //fen.setVisible(true);
        new Fenetre().setVisible(true);
    }
}

------------------------------------------------------------

package main_window;

import javax.swing.JFrame;

public class Fenetre extends JFrame{
    private static final long    serialVersionUID    = 7979400413333400347L;

    public Fenetre() {
        super("Interface für fluidp");
        this.setSize(400, 200);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        //si tu n'ajoute jamais les composant a la fenetre ils ne le feront pas
        //a ta place :D
        setContentPane(new StoffMenu());//si tu ne desire qu'un composant maitre
        //sinon utilise add et met un joli layout par defaut contrairement aux jpanel
        //qui ont un layout en FlowLayout les jframe c'est BorderLoyout
        //add(new StoffMenu(), java.awt.BorderLayout.CENTER);
    }
}

------------------------------------------------------------

package main_window;

import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class StoffMenu extends JPanel{
  
    private static final long serialVersionUID = 1L;
  
    //JPanel pan = new JPanel();
    //BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
    BoxLayout bl = new BoxLayout(this,BoxLayout.X_AXIS);
    JLabel lab = new JLabel("Gas studiert :");
    String c[] = {"H2","O2","N2","H2O","CH4"};
    JComboBox cb = new JComboBox(c);

    public StoffMenu(){
        //pas utile oublie pas que tu es deja dans un JPanel
        //pan.setLayout(bl);      
       // pan.add(lab);
        //pan.add(cb);
        //this.add(pan);
        //this.setVisible(true);//pas utile
        setLayout(bl);      
        add(lab);
        add(cb);
    }
  
}


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

vendredi 21 juillet 2006 à 14:57:56 | Re : creation d'interface graphique en java

melianos31

Bon, ca résoud la plupart de mes problèmes, sauf un.

je cherche a mettre des menu, (comme StoffMenu) les uns en dessous des autres, (c'est pas plus facile avec un JPanel ? )
et je n'arrive pas à mettre le layout avec BorderLayout.

        BorderLayout bl = new BorderLayout(); // ca fonctionne

        this.setLayout(bl); // la ca plante
ou
       add(new StoffMenu(), java.awt.BorderLayout.CENTER);
// qui plante aussi

(Désolé si ca te semble être me macher le boulot, je galère dessus depuis ce matin)

vendredi 21 juillet 2006 à 15:27:06 | Re : creation d'interface graphique en java

Twinuts

Membre Club Administrateur CodeS-SourceS
tu tourne avec quel jdk 1.4 ou 1.5

si tu es avec le jdk 1.5 cela devrai fonctionner sinon il te faut passer par le contentpane

getContentPane().setLayout(bl);
getContentPane().add(new StoffMenu(), java.awt.BorderLayout.CENTER);



"je cherche a mettre des menu"
des menu comme Fichier, Edition, etc... ? si oui passe par un JMenu et pour le ratacher a une JFrame tu fais setJMenu(monJmenu);

"Désolé si ca te semble être me macher le boulot, je galère dessus depuis ce matin"
c'est rien va :D

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

vendredi 21 juillet 2006 à 16:00:07 | Re : creation d'interface graphique en java

melianos31

Bon, ca fonctionne tant que j'ajoute StoffMenu, (je passe par un JPanel pour mettre plusieurs StoffMenu),
mais quand je tente d'ajouter un EinorParButton, ou un VariablenMenu au JPanel, c'est plus ca (EinorParButton ne s'affiche pas, VariablenMenu plante le tout).
Donc, comment puis-je rajouter un grand nombre de ces Menus sans que ca plante ? ( il m'en faut 5 ou 6, dont 4 differents)

class Fenetre
//////////////////////////////////////////////////////////
public class Fenetre extends JFrame{
    private static final long    serialVersionUID    = 7979400413333400347L;
    JPanel pan = new JPanel();
   
    public Fenetre() {
        super("Interface für fluidp");
        this.setSize(400, 200);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
       
        BoxLayout bl2 = new BoxLayout(pan,BoxLayout.Y_AXIS);
        pan.setLayout(bl2);
       
        pan.add(new StoffMenu());
       
        BorderLayout bl = new BorderLayout();
       
        getContentPane().setLayout(bl);
        getContentPane().add(pan);      
    }
}

class EinorParButton
//////////////////////////////////////////////////
public class EinorParButton extends JPanel{
   
    private static final long serialVersionUID = 1L;
    JPanel pan = new JPanel();
    BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
    ButtonGroup group = new ButtonGroup();   
    JRadioButton b1 = new JRadioButton("Einzelwert",true);
    JRadioButton b2 = new JRadioButton("Parameterfeld",false);
  
    public EinorParButton(){
        pan.setLayout(bl);
        group.add(b1);
        pan.add(b1);
        group.add(b2);
        pan.add(b2);
    }
}

class VariablenMenu
////////////////////////////////////////////////////////////7
public class VariablenMenu extends JPanel{
    private static final long serialVersionUID = 1L;
    JPanel pan = new JPanel();
    public VariablenMenu(String s){
        BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
        this.setLayout(bl);
      
        JLabel lab3 = new JLabel(s);
        this.add(lab3);
        String c[] ={"Druck(in bar)","Temperatur(in K)","RHO( in ??)"};
        JComboBox cb = new JComboBox(c);
        this.add(cb);     
        JTextField tf = new JTextField();
        this.add(tf);
    }
}


vendredi 21 juillet 2006 à 16:21:17 | Re : creation d'interface graphique en java

Twinuts

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
public class EinorParButton extends JPanel{
   
    private static final long serialVersionUID = 1L;
    JPanel pan = new JPanel();
    BoxLayout bl = new BoxLayout(pan,BoxLayout.X_AXIS);
    ButtonGroup group = new ButtonGroup();   
    JRadioButton b1 = new JRadioButton("Einzelwert",true);
    JRadioButton b2 = new JRadioButton("Parameterfeld",false);
  
    public EinorParButton(){
        pan.setLayout(bl);
        group.add(b1);
        pan.add(b1);
        group.add(b2);
        pan.add(b2);
        this.add(pan);
    }
}

"EinorParButton ne s'affiche pas, VariablenMenu plante le tout"
comment ca il plante le tout???

pour en ajouter plein tu fais

public class Fenetre extends JFrame{
    private static final long    serialVersionUID    = 7979400413333400347L;
    EinorParButton epb1 = new EinorParButton();
    EinorParButton epb2 = new EinorParButton();
    EinorParButton epb3 = new EinorParButton();
    EinorParButton epb4 = new EinorParButton();
    EinorParButton epb5 = new EinorParButton();
    JPanel pan = new JPanel();
   
    public Fenetre() {
        super("Interface für fluidp");
        this.setSize(400, 200);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
       
        BoxLayout bl2 = new BoxLayout(pan,BoxLayout.Y_AXIS);
        pan.setLayout(bl2);
       
        pan.add(new StoffMenu());
        pan.add(epb1);
        pan.add(epb2);
        pan.add(epb3);
        pan.add(epb4);
        pan.add(epb5);

        BorderLayout bl = new BorderLayout();
       
        getContentPane().setLayout(bl);
        getContentPane().add(pan);      
    }
}


tsé le mieux avant d'essayer de faire une interface graphique avec tout plein de composants dans tout les sens c'est de déja bien maitriser ceux-ci et egalements de bien maistriser les notions de conteneur... mais bon

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA


1 2

Cette discussion est classé dans : public, fenetre, import, javax, swing


Répondre à ce message

Sujets en rapport avec ce message

Problème rafraichissement image avec Swing [ par ejouvin ] Bonjour.Je suis en train de faire une petite application qui contient une arborescence à gauche et une fenêtre de détail sur la droite.Dans le code su PB DE SCROLLBAR :'( - URGENT - [ par Foub12 ] Bonjour,Je ne comprends pas pourquoi ma scrollbar ne s'affiche. Il me semble pourtant avoir tout fait...HELP ME !!!!Si je mets un BorderLayout CENTER JTable supprimer ligne [ par crazysetup ] Salut a tous, j'ai un problème et j'aimerais trouver la solution.J'ai créé une JTable avec un bouton ajouter qui ajoute des lignes vides et un autre s JSlider renderer dans une JTable [ par malawih ] Bonjour, J ai insere des JSlider dans une colonne d une JTable, en refinissant le renderer et l editor. Le probleme est que les slider ne sont pas mis caret perso [ par 3615jenveux ] Bonjour,Je cherche a écrire un Caret de sélection de texte perso pour un JTextComponent. Cela fonctionne, mais j'ai du mal implémenter ma classe, car manipuler un document xml avec jtree [ par noussala ] bonjour a tous,voila j'aimerai pouvoire afficher les feuille d'un arbre jtree ,quand on selectionne un noeud afficher ses feuille, j'ai ce code qui me JTable- clic sur image [ par thassa ] bonjour,Le code ci-dessous affiche un tableau contenant des images.le problème est que si je clique pour la premiere fois sur l'image pour afficher un camera ipaffichage camera ip avec la jmf [ par stage3 ] bonjour, j'ai toujour un probleme avec l'affichage de ma camera dans mon appli java... j'arrive à afficher une video .mpg presente sur mon ordinateur JTable (aider moi SVP) please !! [ par amine1234Z ] Bonsoir voila j'ai ajouter juste le code, j'ai pas pu ajouter la base de donnée est ce que qlq un peut m'aider SVP . - c'est a vous de la créé ajout d'une image et une icone [ par TSI3ISSAT ] Bonjour !!! j'aime savoir comment ajouter une image et une icone dans une fenêtre j'ai déja


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.