Faculté I&C, Claude Petitpierre, André Maurer 1 Java
Faculté I&C, Claude Petitpierre, André Maurer 2 Classe Java public class Depart { public static int x = 0; public static void main(String[] args) { System.out.println(args.length); System.out.println(x); } Fichier: Depart.java La classe Depart doit être déposée dans un fichier Depart.java Quand tous les champs et les méthodes sont statiques, il n'y a pas besoin d'instanciation Le système recherche et appelle une méthode main définie comme ci-dessus
Faculté I&C, Claude Petitpierre, André Maurer 3 Classes Java (package) package modules; public class Depart { public static int x = 0; public static void main(String[] args) { System.out.println(args.length); } Fichier Depart.java dans répertoire modules La classe ci-dessus contient package, elle doit être déposée dans un répertoire src/modules
Faculté I&C, Claude Petitpierre, André Maurer 4 Répertoires Java package modules; import actions.Mouvement; import actions.*; public class Depart { public static int x = 0, y = 0; public static void main(String[] args) { Mouvement.descend(); System.out.println(args.length); } package actions; public class Mouvement { public static void descend() { System.out.println("descendre"); } // répertoires src actions Mouvement.java modules Depart.java indique où se trouve les autres classes
Faculté I&C, Claude Petitpierre, André Maurer 5 Objets et classes package actions; import modules.Cercle; public class Main { public static void main(String[] args) { Cercle cercle = new Cercle(); cercle.setX(100); } // Pas de statique dans la classe instanciée (les statiques sont globales) // cercle est local à main package modules; public class Cercle { private int x = 0; public int getX() { return x; } public void setX(int x) { this.x = x; }
Faculté I&C, Claude Petitpierre, André Maurer 6 Entrer dans le monde d'objets (plus de statiques) package actions; public class Programme { int x = 12; void run() { // code du programme System.out.println(x);... } package actions; import modules.Cercle; public class Main { public static void main(String[] args) { new Programme().run(); } Plus de statiques StatiqueObjets
Faculté I&C, Claude Petitpierre, André Maurer 7 Héritage ( extends, implements ) public class GraphicPanel extends JPanel { public int color = 255 * 256 * 256; public int x = 0; public int y = 0; public void paint(Graphics g) { g2.clearRect(0, 0, getWidth(), getHeight()); g2.setColor(new Color(color)); g2.fillArc(x, y, 40, 40, 45, 315); } GraphicPanel obtient toutes les propriétés ou attributs et méthodes de JPanel GraphicPanel est un JPanel paint remplace la méthode paint définie dans JPanel
Faculté I&C, Claude Petitpierre, André Maurer 8 Interface package actions; public interface Face { int get(); // doit être implémentée dans la classe qui hérite } package actions; import java.util.ArrayList; public class MyFace implements Face{ public int get() { // TODO Auto-generated method stub return 0; } } // une interface donne une vue homogène des objets qui l'implémentent
Faculté I&C, Claude Petitpierre, André Maurer 9 Instructions ( Java – Javascript ) String [ ] a = new String[10]; for (int i=0; i<a.length; i++) { } if (a[0].equals("xxx")) { a[0] = "yyy"; } else { a[0] = "zzz"; } int i = 0; while(true) { i += 1; if (i<10) { continue; } break; } switch (i) { case 1: i = 10; break; } var a = new Array(10); for (var i=0; i<a.length; i++) { } if (a[0] == ("xxx")) { a[0] = "yyy"; } else { a[0] = "zzz"; } var i = 0; while(true) { i += 1; if (i<10) { continue; } break; } switch (i) { case 1: // peut contenir des strings i = 10; break; }
Faculté I&C, Claude Petitpierre, André Maurer 10 String ( Java – Javascript ) var s = "abcd" s.charAt(1) s.indexOf("bc") s.substring(2, s.length) s.lastIndexOf("b") var s1 = s.replace("b", "X") alert(s1) String s = "abcd"; s.charAt(1); s.indexOf("bc"); s.substring(2, s.length()); s.lastIndexOf("b"); String s1 = s.replace("b", "X"); System.out.println(s1);
Faculté I&C, Claude Petitpierre, André Maurer 11 Tableaux ( Java – Javascript ) var a = new Array(10); var arr = [] arr[0] = "Hans" var x = arr[0] var n = arr.length arr.push("Max") x = arr.pop(); arr.unshift("Moritz") var s2 = arr.shift() alert(arr.join()) String a[] = new String[10]; // longueur fixe ArrayList arr = new ArrayList (); arr.set(0,"Hans"); String x = arr.get(0); int n = arr.size(); arr.add("Max"); x = arr.remove(arr.size()-1); arr.add(0,"Moritz"); String s2 = arr.remove(0); System.out.println(arr);
Faculté I&C, Claude Petitpierre, André Maurer 12 Tableaux associatifs ( J – JS ) var hm = [ ] hm["manager"] = "Hans" hm["manager"] var hs = { } // sans méthodes hs["manager"] = true hs["employe"] = true for (var i in hs) { alert(i) } HashMap hm = new HashMap (); hm.put("manager", "Hans"); hm.get("manager"); HashSet hs = new HashSet (); // ensemble: sans doublons hs.add("manager"); hs.add("employe"); for (String i: hs) { System.out.println(i); }
Faculté I&C, Claude Petitpierre, André Maurer 13 Tris public class Tri { public static void main(String[] args) { ArrayList liste = new ArrayList (); liste.add("Moritz"); liste.add("Graetel"); Collections.sort(liste); System.out.println(liste); } function execute() { var liste = [ ] liste.push("Moritz") liste.push("Graetel") liste.sort() alert(liste); }
Faculté I&C, Claude Petitpierre, André Maurer 14 Objets et classes ( J – JS ) public class Main { public static void main (String[] args) { } public class Cercle { public Cercle() {... } // constructeur public int getX() { return x; } // fonction globale function main (args) { } function Cercle () { this.getX = function () { return x } }
Faculté I&C, Claude Petitpierre, André Maurer 15 Architecture des fenêtres graphiques JFrame JPanel + layout Les éléments graphiques sont inscrits directement dans le panel JPanel + layout JButton Généré au moyen de Visual Editor
Faculté I&C, Claude Petitpierre, André Maurer 16 Affichage d'éléments graphiques JPanel paint() { sait appeler les enfants des éléments graphiques (boutons, fields …) qui contiennent à leur tour des paint() les feuilles dessinent les composants } paint est appelée automatiquement quand la fenêtre doit être rafraîchie, c'est-à-dire: lorsqu'elle est crée lorsqu'elle revient au-dessus des autres fenêtres lorsqu'elle a été modifiée lorsqu'on le demande en appelant jPanel.repaint()
Faculté I&C, Claude Petitpierre, André Maurer 17 Création d'un champ de texte avec listener ( généré par Visual Editor ) private JTextField getJTextField() { if (jTextField == null) { jTextField = new JTextField(); jTextField.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println( jTextField.getText() ); } ); lecture du champ } return jTextField; } // actionPerformed est appelée quand on tape CR dans le champ de texte
Faculté I&C, Claude Petitpierre, André Maurer 18 Création de graphiques public class GraphicPanel extends JPanel { public int color = 255 * 256 * 256; public int x = 0; public int y = 0; public void setXY(int x, int y) { // méthodes de travail this.x = x; this.y = y; repaint(); } public void paint(Graphics g) { // remplace la méthode originale g2.clearRect(0, 0, getWidth(), getHeight()); // == this.getHeight g2.setColor(new Color(color)); g2.fillArc(x, y, 40, 40, 45, 315); } } // peut être introduit à la place d'un JPanel (c'est aussi un JPanel)
Faculté I&C, Claude Petitpierre, André Maurer 19 Introduction du JPanel graphique et d'un listener private GraphicPanel getGraphicPanel() { if (graphicPanel == null) { graphicPanel = new GraphicPanel(); graphicPanel.setLayout(new GridBagLayout()); graphicPanel.addMouseMotionListener( new java.awt.event.MouseMotionAdapter() { public void mouseMoved(java.awt.event.MouseEvent e) { graphicObjet.getGraphicPanel().setXY(e.getX(), e.getY()); } ); } return (GraphicPanel) graphicPanel; } // généré automatiquement par Visual Editor (plugin Eclipse) modifié après génération Ajouté
Faculté I&C, Claude Petitpierre, André Maurer 20 Listener du bouton private JButton vert = null; private JButton getVert() { if (vert == null) { vert = new JButton(); vert.setText("Vert"); vert.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { GraphicPanel gp = ((GraphicPanel)thisClass.getGraphicPanel()); gp.color = 255<<8; gp.repaint(); } } // code exécuté dans le listener ); } // appelle le paint de GraphicPanel (l'arbre s'il y en a un) return vert; }
Faculté I&C, Claude Petitpierre, André Maurer 21 Interval timer ( listener ) new Timer( // créé dans le programme principal 100, new AbstractAction() { public void actionPerformed(ActionEvent e) { thisClass.getGraphicPanel().computePosition(); } ).start();
Faculté I&C, Claude Petitpierre, André Maurer 22 JFrame > JPanel > JPanel Palette > Choose Bean
Faculté I&C, Claude Petitpierre, André Maurer 23 Layouts
Faculté I&C, Claude Petitpierre, André Maurer 24 BorderLayout NORTH EAST WEST SOUTH CENTER
Faculté I&C, Claude Petitpierre, André Maurer 25 FlowLayout
Faculté I&C, Claude Petitpierre, André Maurer 26 BoxLayout(Y)
Faculté I&C, Claude Petitpierre, André Maurer 27 GridLayout private JPanel getJContentPane() { if (jContentPane == null) { GridLayout gridLayout = new GridLayout(); gridLayout.setRows(2);...
Faculté I&C, Claude Petitpierre, André Maurer 28 GridBagLayout Sur deux colonnes Pas élastique
Faculté I&C, Claude Petitpierre, André Maurer 29 Introduction d'un listener Bouton droit de la souris
Faculté I&C, Claude Petitpierre, André Maurer 30 Timer et mouvement public MultiPanel() { super(); // généré automatiquement dans la JFrame initialize(); new Timer(100, new ActionListener(){ // copier-coller ce timer public void actionPerformed(ActionEvent e) { getGraphic().x1 += 5; // mise à jour des coordonnées getGraphic().y1 += 5; getGraphic().repaint(); // demander de repeindre le panel } }).start(); // démarrage du timer } Dans la classe de la JFrame:
Faculté I&C, Claude Petitpierre, André Maurer 31 Graphic panel public int x=50,y=50,x1=10,y1=10; public int color = 100*256* * ; // rgb: red green blue public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; // transformation normal 2D g2.clearRect(0, 0, getWidth(), getHeight()); g2.setColor(new Color(color)); g2.fillArc(x, y, 40, 40, 45, 315); g2.setColor(new Color(0)); g2.fillArc(x1, y1, 40, 40, 0, 360); } Création d'un JPanel + adjonction de ces instructions Ajouter ce JPanel au JFrame au moyen de Palette > Choose Bean Graphics Graphics2D
Faculté I&C, Claude Petitpierre, André Maurer 32 Complétion CTRL- espace Sélectionner Cliquer