mardi 3 mars 2015

Java - Superposer un JLabel sur un JToggleButton

Bonjour, Dans un travail, nous voulons représenter le plus fidèlement possible l'interface du logiciel Paint ( et ses fonctionnalités ! ). Nous voulons entre autres représenter les boutons permettant de changer la couleur avec une zone de couleur :


Il est donc composé d'un JToggleButton auquel on ajoute un JLabel. Pour éviter les problèmes de rafraîchissement, nous allons miser sur le fait qu'un JToggleButton est un conteneur. Nous allons donc créer et ajouter le JLabel au JToggleButton plutôt qu'à un JPanel. On doit cependant y aller dans le code plutôt qu'avec l'onglet Design.

Dessiner votre JButton normalement dans l'onglet Design. Trouvez-le dans votre code ( constructeur ). Suite à sa création,  ajoutez les lignes de code suivantes :

boutonCouleur1 = new JToggleButton("Couleur 1");
boutonCouleur1.setLayout( new FlowLayout()); // on assigne un FlowLayout au bouton car il sera un conteneur, un FlowLayout permettra de positionner le JLabel contenant la couleur plus facilement.
labelCouleur1 = new JLabel(); // création du JLabel, a été déclaré comme variable d'instance
labelCouleur1.setOpaque(true); // afin qu'il ne soit pas transparent, qu'il puisse représenter une couleur comme le noir dans celui ci-haut
boutonCouleur1.add(labelCouleur1); // le lable est ajouté au JToggleButton



On retourne dans l'onglet Design. Dans la fenêtre de structure, on voit que le JLabel est à l'intérieur du JToggleButton. Si on sélectionne le JLabel, il est minuscule ( qu'un point ). On doit le redimensionner. Étant donné qu'il est dans un FlowLayout, on doit le redimensionner avec la propriété preferredSize ( dans les propriétés avancées ). 

Le tour est joué ! Pour écrire couleur1 sur le JToggleButton, vous pouvez modifier la propriété verticalAlignment à Bottom.




lundi 2 mars 2015

Nouvelle activité au département : des présentations sur différents thèmes reliés à l'informatique !


Une présentation aura lieu à chaque moi sur un sujet relié à l'informatique. Ce mois-ci :De Pascaline à Pepper, petite histoire de nos relations cognitives.

La pensée, cette chose évanescente dont les humains furent les fiers dépositaires des millénaires durant, changent de sens en ce début de XXIième siècle.
Nous ne sommes plus seuls tributaires de ses manières.
Primates et mammifères marins se voient reconnaître de nouveaux droits issus de leur capacité cognitive.
Et un nouveau joueur s'apprête à survenir.
Une petite histoire de l'informatique sur les rapports cognitifs entre l'homo sapiens et sa machine.


Cette présentation de Jean-Marc Deschamps aura lieu le 25 mars à 18h00. Vous devez vous inscrire en utilisant le portail ( http://informatique.cvm.qc.ca/portail ) .


mardi 24 février 2015

Android Studio - Accéder à la javadoc directement

Pour ce faire, on doit aller ajouter un paramètre :

Menu FIle --> Settings --> Editor --> ajouter le crochet à "Show Quick Doc on Mouse Move"


mercredi 11 février 2015

Eclipse - Ne pas avoir à exécuter deux fois le programme pour avoir la bonne version

Bonjour,

Certains étudiants m'ont fait part qu'ils devaient toujours faire run deux fois pour que l'exécutable tienne en compte de leur derniers changements. Je n'ai jamais eu ce problème. La cause vient d'un paramètre que vous pouvez facilement modifier.

Menu Window -- Preferences -- développez la section Run/Debug , Launching


Assurez-vous d'avoir la première section à Always et le premier crochet à Build.

lundi 9 février 2015

Compétition d'applications mobiles ApplETS - Victoire d'une équipe du département

Vendredi et samedi dernier avait lieu une compétition de développement d'applications mobiles à L'ÉTS. C'était la 2e édition et pour la première fois, 2 équipes du département compétitionnaient. Suite à des présentations sur le développement Android par des professeurs et des développeurs, les étudiants ont environ 20 heures pour développer une app sur un sujet énoncé le soir même ( Cette année, c'était la santé ). Les étudiants doivent donc faire une nuit blanche afin de programmer de 20h30 le vendredi soir à 16h00 le samedi. Ils doivent finalement présenter leur application aux juges et aux autres personnes présentes.

Une dizaine d'équipes de cégeps et d'universités ont participé, la majorité développaient sous Android, une équipe en IOS et une en WindowsMobile.

Je suis très content de la performance de nos deux équipes car les deux équipes ont pu remettre une application fonctionnelle sur un téléphone dans les temps prescrits, ce qui ne fut pas le cas de toutes les équipes. Les deux équipes étaient formées de :

Olivier Racette, François Genest et Oleksandr Yuvzhenko ( régulier ) : ont fait une application Android permettant de conserver nos résultats de pression artérielle.

Laurel Daigneault, Philippe Deschesnes et Danny Boisvert ( intensif ) : ont fait une application utilisant le fonctionnement de Tinder mais relatifs à des recettes santé.

L'équipe de l'intensif a remporté la palme de meilleur projet pour les équipes provenant du collégial

Félicitations aux 6 étudiants !

jeudi 5 février 2015

Java - transparence sur les JPanels

Bonjour,

Certains étudiants de deuxième année ont attiré mon attention sur le fait que les panels dont la couleur avait un certain degré de transparence ( alpha ) ne s'affichaient pas bien. C'est particulièrement vrai pour les Panels qu'on dessine nous-mêmes ( dessin sur mesure ).

Pourquoi ?

Cela a rapport à l'opacité qui, par défaut, est complète sur les JPanels ( la propriété opaque est à true ) . Cela cause une contradiction avec une couleur de fond qui n'est pas totalement opaque.

Solution ?

1. La solution facile est d'assigner la couleur de fond à l'objet représentant la surface de dessin plutôt que dans la redéfinition de la méthode paintComponent  :

Ex.

SurfaceDessin sd;


// dans le constructeur du JFrame

...
sd = new SurfaceDessin();
sd.setBounds( 10,10,200,200 );
sd.setBackground ( new Color ( 23,56, 100, 80 );
getContentPane().add(sd);


2. Une solution plus permanente existe, mais elle est plus longue à réaliser. Elle consiste à placer la surface de dessin ( ou un autre JPanel ) complètement transparent ( setOpaque( false )) et de dessiner une grand rectangle occupant toute la surface du JPanel et d'appliquer la couleur ayant un degré de transparence à ce rectangle. Donc dans le paintComponent, ça donne :

protected void paintComponent ( Graphics g )
{

g.setColor( getBackground() );
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);


}

et dans le constructeur :

//ajouter la surface de dessin
sd = new SurfaceDessin();

sd.setBounds( 10, 140, 300, 200);
sd.setOpaque(false);
sd.setBackground( new Color(255, 0, 0, 20) );
getContentPane().add(sd);

lundi 10 novembre 2014

Séjour découverte en science à l'université de Montréal

Bonjour,

En janvier, avant le début de la prochaine session, vous êtes conviés à un séjour informatique à l'université de Montréal. Du 9 au 11 janvier, différents ateliers vous donnent l’occasion d’expérimenter concrètement, dans une atmosphère conviviale, les études universitaires en informatique.

Activités du séjour en informatique
 
·         Modélisation et impression 3D
·         Jeux vidéo et infographie
·         Bio-informatique
·         Génie logiciel
·         Cryptographie
·         Intelligence artificielle


C'est gratuit mais il faut s'inscrire sur le site suivant : http://sejour.iro.umontreal.ca/2015/

Vous avez jusqu'au 19 décembre pour vous inscrire !