Java application…

bon j’ai un petit pb avec mon appli java, je suis entrain de faire un lecteur rss, mais là n’est pas le pb, là je bloque dès le début en fait… Pourtant j’ai un livre sous les yeux et de la doc sur le net…

voilà ce que j’ai fait:

/*
* Created on 7 juin 2005
*
* @author Martin Thibault
*
*/

//on importe les packages importantes
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//fin de la declaration des packages

// la classe main de l'application qui herite de JFrame
public class DaftRSS extends JFrame{

//on declare les variables de la classe
private JButton ajouter, supprimer, rafraichir, quitter; //definition des boutons
private JComboBox listeRSS; //la liste des flux
private JLabel titreNews, titreFeed; //des labels pour l'affichage des flux
private JList listeNews; // liste des news
private JTextArea affNews; //afficheur de la news

//a enlever, ne laisser que les tableaux vides!
private String tabListeRSS[] = {"test","test2","test3"};
private String tabListeNews[]= {"test","test2","test3"};
private String tabAffNews[]= {"test","test2","test3"};

public DaftRSS (String[] args){
//constructeur de la classe

/*on prepare le GUI*/

//on cree un objet de la classe interne pour les mouvements
ActionEventHandler gestionnaire = new ActionEventHandler();

//on cree un conteneur
Container conteneur = getContentPane();
conteneur.setLayout( new FlowLayout() );

//on ajoute à l'interface les objets
ajouter = new JButton( "Ajouter\nun Flux RSS");
ajouter.addActionListener( gestionnaire );
conteneur.add( ajouter );

supprimer = new JButton( "Supprimer\nun Flux RSS");
supprimer.addActionListener( gestionnaire );
conteneur.add( supprimer );

rafraichir = new JButton( "Rafraichir le flux");
rafraichir.addActionListener( gestionnaire );
conteneur.add( rafraichir );

quitter = new JButton( "Quitter");
quitter.addActionListener( gestionnaire );
conteneur.add( quitter );

listeRSS = new JComboBox( tabListeRSS );
listeRSS.addActionListener( gestionnaire );
conteneur.add( listeRSS );

titreNews = new JLabel( "Titre du flux");
conteneur.add( titreNews );

titreFeed = new JLabel( "Titre du flux");
conteneur.add( titreFeed );

listeNews = new JList( tabListeNews );
listeNews.setVisibleRowCount( 10 ); //on definit le nbr de champs a afficher
listeNews.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); // on ne veut qu'une seule reponse possible
//a modifier //pour recuperer la valeur de la liste
listeNews.getModel().getElementAt(listeNews.getSelectedIndex());
//
conteneur.add( listeNews );

affNews = new JTextArea( 10, 15 ); //on definit la taille
affNews.setText("test ici par là a enlever apres"); //fonction de remplissage
affNews.setEnabled( false );
conteneur.add( affNews );

}

//on definit la classe des evenements
private class ActionEventHandler implements ActionListener {

//methode pour gerer les evenements
public void actionPerformed( ActionEvent evenement){

//on commence par les boutons
if( evenement.getSource() == quitter)
{ //on sort du programme
System.exit(0);
}
else if (evenement.getSource() == ajouter)
{
//on affiche un pop up et on recupere la valeur
}
else if (evenement.getSource() == supprimer)
{
}
else if (evenement.getSource() == rafraichir)
{
}
else if (evenement.getSource() == listeRSS)
{
}
}
}
}

C’est juste pour essayer de faire l’interface… le pb est qu’il me renvoi une erreur comme quoi le main est pas définit ou je sais pas quoi…
"the active editor does not contain a main type.
java.lang.NoClassDefFoundError: DaftRSS
Exception in thread "main" "… il me renvoir ca sous eclipse
Donc là j’ai éssayé de faire une classe main comme il veut, mais il lui faut en static, et l’appel à la fonction que je fais pour appeler l’interface bein il aime pas … il me dit que dans cette fonction c’est pas static… mais là on tourne en rond je trouve….

Bon je cherche depuis hier et je trouve pas… si qq peu m’aider 😉 merci

14 Responses to “Java application…

  • euh alors pour peu que je me souvienne les définitions de tableaux avec valeurs bof.

    sinon il serait peutet’ de bonne aloi de nous montrer le fameux main d’où tu crée l’instance de ton interface.

    PS. : on dit bien une interface donc une GUI

  • alors pour la definition de tableau, bein il m’oblige a le faire, ca ne sera pas comme ca apres, ca sera rempli dynamiquement

    Sinon tout le code est là en fait… la classe main en fait c’est mon constructeur, donc en fait la methode qui porte le meme nom que le fichier, sinon en java ca donne une erreur…
    donc je n’en sait pas plus…

  • nan il faut que tu es une fonction static void main quelque part … sinon ça risque pas de marcher 😉

  • ok, bein là je teste avec netbean, parce qu’eclipse me sort des erreurs de fou…
    Donc on va voir, là j’ai une fonction main et une autre qui est en static void, c’est dans celle là que je dois faire l’appel aux fonctions de constructions de l’interface non?

  • c’est dans celle-là que tu dois une instantiation de classe graphique.

    ressemblant à ça :
    java et swing 🙂

    regarde le beau tutorial 🙂

    tu remplaces le new JFrame par ta classe à toi 🙂

  • lol je viens de tester leur code ca me renvoi la meme erreur…
    java.lang.NoClassDefFoundError: daftrss/HelloWorldSwing
    Exception in thread "main"

    pas mal je trouve… je dois faire une betise qq part… mais ou 😉

  • Si ce ne marche toujours pas, je crois qu’il serait de bon aloi de revenir au bon vieux javac de base,
    ou alors de se taper la FAQ d’eclipse and co 😉

  • bon c’est bon, ca marche, mais une fois sur deux… et que le helloworld, donc là je vais essayer de faire mon appli merci 😉

  • bon courage

  • merci 😉

    bon j’ai avancé, j’ai mon interface, enfin en partie parce que les listes ne sont pas remplie du coup ca s’affiche pas 😉

    voici mon code, j’ai une erreur au niveau de la derniere classe, lorsque je crée un objet il me sort: No enclosing instance of type DaftRss is accessible. Must qualify the allocation with an enclosing instance of type DaftRss (e.g. x.new A() where x is an instance of DaftRss).

    Donc d’apres mes recherches c’est un pb de classe static, mais qd je passe la classe en static, bein j’ai plus le droit d’avoir des variables dedans…

    une idée?

    voilà mon code 😉 merci

    /*
    * Created on 7 juin 2005
    *
    * TODO To change the template for this generated file go to
    * Window - Preferences - Java - Code Style - Code Templates
    */

    /**
    * @author tybodoudou
    *
    * TODO To change the template for this generated type comment go to
    * Window - Preferences - Java - Code Style - Code Templates
    */

    //on importe la classe
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class DaftRss {

    //on definit les variables
    private JButton ajouter, supprimer, rafraichir, quitter; //definition des boutons
    private JComboBox listeRSS; //la liste des flux
    private JList listeNews; // liste des news
    private JTextArea affNews; //afficheur de la news

    //a enlever, ne laisser que les tableaux vides!
    private String tabListeRSS[] = {"test","test2","test3"};
    private String tabListeNews[]= {"test","test2","test3"};
    private String tabAffNews[]= {"test","test2","test3"};

    //on crée une classe privée pour la GUI
    private static void affGui()
    {

    //on affiche les decorations du JFrame
    JFrame.setDefaultLookAndFeelDecorated(true);

    //on crée une nouvelle fenetre et on ajoute le titre
    JFrame fenetre = new JFrame("Daft RSS V 0.1");
    //on verifie que la fenetre peut être fermée
    fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //on lui donne une taille
    fenetre.setSize(600,600);

    //on defini la disposition des widgets
    fenetre.getContentPane();
    fenetre.getContentPane().setLayout(new BorderLayout(30,30));

    //c'est ici l'erreur //on cree un objet de la classe interne pour les évenements
    ActionEventHandler gestionnaire = new ActionEventHandler();

    //on crée les boites du layout
    Box boites[] = new Box[2];
    boites[0] = Box.createHorizontalBox();
    boites[1] = Box.createHorizontalBox();

    //on affiche les widgets
    JButton ajouter = new JButton("Ajouter un flux RSS");
    boites[0].add(ajouter);

    JButton supprimer = new JButton("Supprimer un flux RSS");
    boites[0].add(supprimer);

    JButton rafraichir = new JButton("Rafraichir les flux RSS");
    boites[0].add(rafraichir);

    JButton quitter = new JButton("Quitter");
    boites[0].add(quitter);

    JComboBox listeRSS = new JComboBox( );
    boites[0].add(listeRSS);

    JList listeNews = new JList( );
    listeNews.setVisibleRowCount( 10 ); //on definit le nbr de champs a afficher
    listeNews.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); // on ne veut qu'une seule reponse possible
    //a modifier //pour recuperer la valeur de la liste
    listeNews.getModel().getElementAt(listeNews.getSelectedIndex());
    //
    boites[1].add(listeNews);

    JTextArea affNews = new JTextArea( 10, 15 ); //on definit la taille
    affNews.setText("test ici par là a enlever apres"); //fonction de remplissage
    affNews.setEnabled( false );
    boites[1].add(affNews);

    //on ajoute les boites a la fenetre, ces mêmes boites contiennent les widgets
    fenetre.getContentPane().add(boites[0], BorderLayout.NORTH);
    fenetre.getContentPane().add(boites[1], BorderLayout.SOUTH);

    //enfin on affiche la fenetre
    fenetre.pack();
    fenetre.setVisible(true);

    }

    public static void main(String[] args) {
    //on fait appel à la fonction d'affichage de la GUI
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    affGui();

    }
    });
    }

    //on definit la classe des evenements
    private class ActionEventHandler implements ActionListener {

    //methode pour gerer les evenements
    public void actionPerformed( ActionEvent evenement){

    //on commence par les boutons
    if( evenement.getSource() == quitter)
    { //on sort du programme
    System.exit(0);
    }
    else if (evenement.getSource() == ajouter)
    {
    //on affiche un pop up et on recupere la valeur
    }
    else if (evenement.getSource() == supprimer)
    {
    }
    else if (evenement.getSource() == rafraichir)
    {
    }
    else if (evenement.getSource() == listeRSS)
    {
    }
    }
    }
    }

  • moi je crois que je fesais hérité ma frame de l’action listener
    mais c’est peut-être pas très propre :p

  • Bon c’est tres tard… j’ai essayé de faire une interface avec Netbeans, ca marche nickel, ensuite j’ai essayé de faire une classe principale qui apelle cette interface mais ca ne marche pas…
    je ne sais pas pourquoi… surtout que j’ai fait des testes avec des messagesbox, et les fonctions sont bien appelée.. j’ai essayé un setVisible, ca marche pas mieux…. donc je sais pas 😉 une idée?

    La classe principale

    package daft;
    import javax.swing.*;
    /**
    *
    * @author tybodoudou
    */
    public class daftMain {
    /** Creates a new instance of daftMain */
    public daftMain() {

    }

    public static void main(String[] args) {

    daftMain daft = new daftMain();
    daft.afficherPanel();

    }

    public void afficherPanel()
    {
    NewJPanel fenetre = new NewJPanel();
    JOptionPane.showMessageDialog(null,"test","test2",JOptionPane.INFORMATION_MESSAGE);

    }

    }

    la classe de l’interface

    package daft;

    /**
    *
    * @author tybodoudou
    */
    public class NewJPanel extends javax.swing.JPanel {

    /** Creates new form NewJPanel */
    public NewJPanel() {

    initComponents();

    }

    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jButton4 = new javax.swing.JButton();
    jComboBox1 = new javax.swing.JComboBox();
    jTextArea1 = new javax.swing.JTextArea();
    jList1 = new javax.swing.JList();

    setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

    jButton1.setText("Ajouter");
    jButton1.setName("ajouter");
    add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1));

    jButton2.setText("Supprimer");
    jButton2.setName("supprimer");
    add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(65, 0, -1, -1));

    jButton3.setText("Rafraichir");
    jButton3.setName("rafraichir");
    add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(145, 0, -1, -1));

    jButton4.setText("Quitter");
    jButton4.setName("quitter");
    add(jButton4, new org.netbeans.lib.awtextra.AbsoluteConstraints(220, 0, 70, -1));

    jComboBox1.setName("listeSite");
    add(jComboBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(295, 2, 130, 20));

    jTextArea1.setEditable(false);
    jTextArea1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
    jTextArea1.setMinimumSize(new java.awt.Dimension(40, 17));
    jTextArea1.setName("affNews");
    jTextArea1.setPreferredSize(new java.awt.Dimension(40, 17));
    add(jTextArea1, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 30, 300, 270));

    jList1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
    jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    jList1.setName("listeRss");
    jList1.setNextFocusableComponent(jTextArea1);
    jList1.setPreferredSize(new java.awt.Dimension(30, 30));
    add(jList1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 30, 115, 270));
    jList1.getAccessibleContext().setAccessibleName("null");

    }
    // </editor-fold>

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JList jList1;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration

    }

    voilà voilà 😉 et dire qu’il y en a qui se plaignait des posts longs… lol 🙂

  • c’est bon j’ai reussi 😉 ca marche nickel maintenant, plus qu’a faire le soft en lui meme et plus cette p***** d’interface 😉

    le pb venait du fait que j’utilisais une JPane alors qu’il me fallait une JFrame… et maintenant ca roule 😉

    merci en tout cas 😉

  • HOHohohohohoh

    Je ne suis d’aucune utilité ici mais bon voila je voulais fairte un coucou dans la section de dev!!:)

    De toutes facon la plupart des errue en code provienne de la MDE(Merde Devant l’Ecran)
    Allez je deconne bonne chance!:)

Commentaires