Médiaforma

All posts tagged netbeans

Créez un nouveau projet de type Application Java. Nommez-le JDBC1 et cochez la case Create Main Class.

Pour pouvoir interagir avec une base de données MySQL, vous devez passer par un pilote JDBC. Ce pilote est déjà installé dans NetBeans. Vous n’aurez donc pas à l’installer manuellement. Dans le volet Projects, cliquez du bouton droit sur Libraries et choisissez Add Library dans le menu. La boîte de dialogue Add Library s’affiche. Sélectionnez la bibliothèque MySQL JDBC Driver et validez en cliquant sur Add Library :

 

 

Maintenant, votre projet peut accéder au pilote JDBC MySQL, et donc, à toute base de données MySQL.

Insérez les instructions suivantes dans le code généré par NetBeans :

package jdbc1;

import com.mysql.jdbc.Driver;
import java.sql.*;

public class JDBC1 {

public static void main(String[] args) throws SQLException {
Connection connexion = null;
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Le pilote JDBC MySQL a été chargé");
connexion = DriverManager.getConnection("jdbc:mysql://localhost/java", "root", "");

Statement state = connexion.createStatement();
ResultSet result = state.executeQuery("SELECT * FROM membres");
ResultSetMetaData resultMeta = result.getMetaData();

for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(resultMeta.getColumnName(i).toUpperCase() + " | ");
System.out.println();

while(result.next()){
for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(result.getObject(i).toString() + " | ");
System.out.println();
}

result.close();
state.close();
connexion.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}

 

Dans un premier temps, on s’assure que la connexion avec le pilote JDBC est possible. Cette instruction est protégée par une instruction try. Si tout se passe bien, un message indiquant que le pilote JDBC est chargé est affiché dans la console :

Class.forName("com.mysql.jdbc.Driver");
System.out.println("Le pilote JDBC MySQL a été chargé");

Dans un deuxième temps, on établit une connexion avec la base de données java :

connexion = DriverManager.getConnection("jdbc:mysql://localhost/java", "root", "");

Dans le premier paramètre passé à la fonction getConnection() :

  • jdbc:mysql correspond au début de l’URL de connexion. Cet bloc commence toujours par jdbc:. Dans notre cas, nous utilisons mysql, la dénomination mysql: suit donc le début de l’URL.
  • localhost indique la localisation de la machine physique sur le réseau. Ici, nous travaillons en local, d’où le terme localhost.
  • test est le nom de la base de données.

Les deux paramètres suivants correspondent au nom d’utilisateur et au mot de passe utilisés pour établir la connexion. Ici, root et aucun mot de passe.

 

Dans un troisième temps, on crée un objet Statement. Par son intermédiaire, on pourra exécuter des commandes SQL pour interroger la base de données et obtenir les résultats correspondants.

Statement state = connexion.createStatement();

 

Dans un quatrième temps, on définit une requête SQL en créant un objet ResultSet à partir de l’objet Statement défini dans l’étape précédente :

ResultSet result = state.executeQuery("SELECT * FROM membres");

 

Dans un cinquième temps, on récupère les métadonnées de la table.

ResultSetMetaData resultMeta = result.getMetaData();

 

Par leur intermédiaire, on pourra obtenir le nombre de colonnes dans la table avec getColumnCount() et le nom des colonnes avec getColumnName() :

for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(resultMeta.getColumnName(i).toUpperCase() + " | ");
System.out.println();

 

Dans un sixième temps, on fait une boucle while pour récupérer tous les enregistrements de la table :

while(result.next()){

Les données d’un enregistrement sont récupérées une par une avec une boucle for et affichées dans la console :

for(int i = 1; i <= resultMeta.getColumnCount(); i++)
System.out.print(result.getObject(i).toString() + " | ");

 

Après chaque affichage, on saute une ligne pour afficher les enregistrements les uns sous les autres :

System.out.println();

 

Le bloc d’instructions suivant ferme les objets ouverts avec la méthode close() :

result.close();
state.close();
connexion.close();

 

Enfin, la méthode catch() affiche le code de l’erreur si une instruction provoque une erreur dans le bloc try :

catch (Exception e) {
e.printStackTrace();
}

Nous allons créer « à la main » (c’est-à-dire sans utiliser l’onglet Design) une version simplifiée de l’application Dessin à main levée précédente.

Créer un projet de type Java/Java Application avec fonction main(). On obtient ce code :

package jframe.et.menu.manuel;
public class JFrameEtMenuManuel {
    public static void main(String[] args) {
    }
}

Ajoutez extends javax.swing.JFrame à la suite du nom de la classe pour pouvoir créer une JFrame :

public class JFrameEtMenuManuel extends javax.swing.JFrame

Instanciez la classe JFrameEtMenuManuel dans main() :

public static void main(String[] args) {
    JFrameEtMenuManuel frameEtMenu = new JFrameEtMenuManuel(); // Création de la fenêtre
}

Définissez les caractéristiques de la fenêtre dans le constructeur de la classe JFrameEtMenu :

public JFrameEtMenuManuel(){
    this.setTitle("Titre de la fenêtre"); // Texte dans la barre de titre
    this.setResizable(false); // Fenêtre non redimensionnable
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Fermeture de l'appli quand on clique sur la case Fermer
    setSize(400,300); // Taille de la fenêtre
    this.setVisible(true); // Affichage de la fenêtre

Implémentez le menu avant le this.setVisible :

JMenuBar mb = new JMenuBar();
JMenu m1 = new JMenu("Application");
JMenu m2 = new JMenu("Couleur");
mb.add(m1);
mb.add(m2);
JMenuItem i11 = new JMenuItem("Quitter");
JMenuItem i21 = new JMenuItem("Bleu");
JMenuItem i22 = new JMenuItem("Vert");
m1.add(i11);
m2.add(i21);
m2.add(i22);
this.setJMenuBar(mb);

Ajoutez un ActionListener avant le setMenuBar pour traiter la commande de menu Application/Quitter :

i11.addActionListener(new MenuActionListener());
Définissez la classe correspondante pour traiter l’action dans le menu :
class MenuActionListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    System.exit(0);
  }
}

Nous allons maintenant implémenter l’événement drag de la souris pour tracer dans la fenêtre. Pour cela, nous ajoutons un MouseMotionListener et nous indiquons que nous voulons traiter l’événement MouseDragged :

addMouseMotionListener(new java.awt.event.MouseMotionAdapter(){
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                formMouseDragged(evt);
            }
        });

 

La prochaine étape va consister à définir la méthode formMouseDragged() :

private void formMouseDragged(java.awt.event.MouseEvent evt) {
    pointX1 = evt.getX();
    pointY1 = evt.getY();
    pointX2 = evt.getX();
    pointY2 = evt.getY();
    repaint();
}

Nous allons maintenant définir la méthode paint() :

public void paint(Graphics g) {
    g.drawLine(pointX1, pointY1, pointX2, pointY2);
    this.setJMenuBar(mb);
}

Il ne reste plus qu’à déclarer les variables et le programme est opérationnel :

int pointX1, pointX2, pointY1, pointY2;
JMenuBar mb;

Dans cette section, vous allez apprendre à créer un projet composé de deux jFrame. La première s’affiche au lancement de l’application. La deuxième lorsque l’utilisateur clique sur le bouton A propos.

 

 

Commencez par définir un nouveau projet de type Java Application sans créer la classe main. Ajoutez deux jFrame Form à ce projet et incluez-les dans le même package.

Ajoutez les boutons A propos et Quitter dans la jFrame principale. Affichez le titre « Multi fenêtres » dans la barre de titre de la jFrame principale. Pour cela, vous pouvez passer par la propriété title du jFrame ou utiliser le code suivant :

this.setTitle("Multi fenêtres");

En mode Design, double-cliquez sur le premier bouton et complétez la méthode jButton1ActionPerformed() comme ceci :

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  new ficheAPropos().setVisible(true);
}

Ce code crée une instance de la classe ficheAPropos, ce qui provoque l’ouverture de la fiche secondaire A propos (cette instruction suppose que la jFrame secondaire a été appelée ficheAPropos lors de sa création).

Double-cliquez sur le bouton Quitter et complétez la méthode jButton2ActionPerformed() comme ceci :

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
  System.exit(0); // Fermeture de l'appli quand on clique sur la case Fermer
}

Cette instruction se contente de mettre fin à l’application.

Passons maintenant à la jFrame ficheAPropos. Affichez le texte A propos dans la barre de titre de la jFrame en affectant le texte « A propos » à la propriété title de la jFrame. Vous auriez également pu insérer l’instruction suivante dans le constructeur de la classe ficheAPropos pour parvenir au même résultat :

this.setTitle("A propos");

Placez un jLabel dans cette jFrame et insérez-y du texte pour obtenir le résultat suivant :

 

 

Vous vous demandez certainement comment le contenu du label a pu s’afficher sur deux lignes et comment « A propos » peut apparaître en gras. Eh bien, ces deux questions ont une même réponse : en insérant du code HTML dans la propriété text du jLabel. Voici le code utilisé :

<html>Cette boîte de dialogue s'affiche quand l'utilisateur<br>clique sur le bouton <b>A propos</b>.</html>

 

Pour éviter que la fermeture de la jFrame secondaire ne mette fin à l’application, le plus simple consiste à faire appel à la méthode setDefaultCloseOperation(), en lui passant la constante JFrame.HIDE_ON_CLOSE :

this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
Placez cette instruction dans le constructeur de la classe ficheAPropos :
public ficheAPropos() {
  initComponents();
  this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}

Vous allez définir une petite calculatrice qui effectue les quatre opérations élémentaires.

Utilisez le mode design pour mettre en place les contrôles suivants (un jTextField et cinq jButton) :

 

 

Effacez le contenu du jTextField, modifiez la propriété Text des jButton pour qu’ils affichent respectivement +, , *, / et =.

En utilisant l’onglet Navigator, donnez le nom suivant aux contrôles :

Contrôle Nom
jTextField affichage
Premier jButton plus
Deuxième jButton moins
Troisième jButton fois
Quatrième jButton divise
Cinquième jButton egale

 

Définissez les variables suivantes (par exemple, au-dessus de la déclaration des contrôles, à la fin du code) :

float nombre1, nombre2, resultat; // Premier nombre tapé
int operateur; // Opérateur tapé (1=+, 2=-, 3=* et 4=/)

 

En mode Design, double-cliquez sur le premier bouton et ajoutez le code suivant à la méthode plusActionPerformed :

private void plusActionPerformed(java.awt.event.ActionEvent evt) {
    nombre1 = Float.parseFloat(affichage.getText());
    operateur = 1;
    affichage.setText("");
    affichage.requestFocus();
}

Définissez de la même façon les procédures événementielles associées aux trois autres opérateurs :

private void moinsActionPerformed(java.awt.event.ActionEvent evt) {
    nombre1 = Float.parseFloat(affichage.getText());
    operateur = 2;
    affichage.setText("");
    affichage.requestFocus();
}

private void foisActionPerformed(java.awt.event.ActionEvent evt) {
    nombre1 = Float.parseFloat(affichage.getText());
    operateur = 3;
    affichage.setText("");
    affichage.requestFocus();
}

private void diviseActionPerformed(java.awt.event.ActionEvent evt) {
    nombre1 = Float.parseFloat(affichage.getText());
    operateur = 4;
    affichage.setText("");
    affichage.requestFocus();
}

 

Double-cliquez sur le dernier bouton et affecte le code suivant à la méthode egaleActionPerformed :

private void egaleActionPerformed(java.awt.event.ActionEvent evt) {
    nombre2 = Float.parseFloat(affichage.getText());
    switch (operateur){
        case 1:
            resultat = nombre1 + nombre2;
            break;
        case 2:
            resultat = nombre1 - nombre2;
            break;
        case 3:
            resultat = nombre1 * nombre2;
            break;
        case 4:
            resultat = nombre1 / nombre2;
            break;
    }
    affichage.setText("" + resultat);
    affichage.requestFocus();
}

 

Cliquez sur l’icône Run Project dans la partie supérieure de la fenêtre de NetBeans. Choisissez la classe main proposée :

 

 

Le programme est entièrement opérationnel.


Ajoutez deux Radio Button et un Button Group au design. Pour que les boutons radio soient reliés, vous devez les associer au Button group. Sélectionnez les boutons radio et affectez la valeur buttonGroup1 à la propriété buttonGroup des contrôles Radio Button.

 

 


Si vous essayez de supprimer une fonction événementielle de ce genre en sélectionnant son code et en appuyant sur la touche Suppr du clavier :

private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
   // TODO add your handling code here:
}

Le PC émet un son de mécontentement et ne fait rien.

La méthode à utiliser est toute autre.

Dans le volet Design, cliquez du bouton droit sur le contrôle concerné et sélectionnez Properties dans le menu. La boîte de dialogue des propriétés s’affiche. Basculez sur l’onglet Events. Repérez l’événement pour lequel vous voulez supprimer la fonction événementielle. Cliquez sur les points de suspension correspondants puis sur le bouton Remove dans la boîte de dialogue affichée :

 

 

Fermez alors les boîte de dialogue ouvertes en cliquant sur OK puis sur Close.


Insérez un Text Field, cliquez droit sur ce contrôle, pointez Events, Key et cliquez sur KeyReleased. A chaque fois qu’une touche du clavier est pressée, la fonction événementielle générée sera exécutée.

Par exemple, pour connaître le code des touches tapées, utilisez l’instruction suivante, qui affichera le keycode dans le volet Output de NetBeans :

System.out.println(evt.getKeyCode()) ;

Vous pouvez également insérer un contrôle jLabel dans la feuille de l’application, et afficher le keyCode de la touche enfoncée avec l’instruction suivante :

jLabel1.setText(""+evt.getKeyCode());