Sources JavaConsultez toutes les sources
Nombre d'auteurs : 29, nombre de sources : 134, création le 13 avril 2013
- Affichage vertical des titres des onglets d'un JTabbedPane
- JPanel supportant le copier-coller d'images
- Chronomètre simple utilisant un javax.swing.Timer
- Affichage d'informations dans une StatusBar
- Petit utilitaire qui permettant de redimensionner et de déplacer des objets à l'aide de la souris :
- Boîte de dialogue permettant de choisir/appliquer un Look and Feel de manière dynamique
- JCountrySpinner
- JCountryBox
- JKeyboard
- Drag & Drop avec Style et l'API Swing
- Attendre avec style et l'API Swing
Affiche le titre d'un onglet d'une rotation de 90° vers la gauche par rapport au sens de lecture habituel.
La classe TransferableImage est une enveloppe autour d'une instance d'Image.
La classe de test utilise le presse-papiers du système pour copier/coller ce type d'image dans un JPanel.
Cet exemple utilise un javax.swing.Timer pour représenter un chronomètre simple.
Le lancement et l'arrêt de celui-ci se fait grâce à un JButton.
La classe javax.swing.Timer remplace avantageusement l'utilisation directe de thread. Elle génère un évènement à intervalles réguliers (à la milli-seconde). C'est le "event-dispatching thread" qui exécute l'évènement, donc on peut directement modifier des objets graphiques.
Ce programme affiche des informations comme CAPS lock, NUM lock, Scroll lock, la date d'aujourd'hui ainsi que l'heure dans la StatusBar d'une JFrame
Ces classes permettent d'afficher des objets sur un fond.
Ces objets peuvent être redimentionnés et déplacés à l'aide de la souris.
IMPORTANT :
L'utilisation de ces fichiers se réduit à "exemple_fen.java" et "exemple_obj.java"
Il n'est pas indispensable d'étudier les autres classes.
A - Comment tester cet exemple
1 - compilez les fichiers
2 - executez "exemplefen.class"
3 - cliquez sur les objets affichés, puis déplacez-les et modifez l'élastique.
B - Comment créer vos propres objet
regardez les 2 fichiers exemples
1 - comme décrit dans "exemple_fen.java", construisez le fond et les objets.
2 - comme décrit dans "exemple_obj.java", créer votre propre objet.
C - description succinte des fichiers
1 - elastique.java
Ce sont les 8 points qui entourent l'objet sélectionné et qui permettent de le redimenssioner.
Cette classe est transparente pour le programmeur
2 - elastiquepoint.java
C'est 1 point de l'élastique.
Cette classe est transparente pour le programmeur
3 - elastiqueListener.java
Interface reconnue par l'élastique. Les objets redimensionnables doivent contenir cette interface :
- "implements elastiqueListener"
Cette classe est transparente pour le programmeur
4 - elastiqueobjet.java
C'est un objet - de type JComponent - qui peut-être déplacé ou redimenssionné à l'aide de la souris.
Vos objets doivent hériter de cette classe "elsatiqueobjet"
Attention "elastiqueobjet" utilise 2 methodes des événement souris :
- "MousePressed()"
- "MouseDragged()"
Ces 2 méthodes vous sont interdites. "elastiqueobjet" transmet ces événements aux classes filles dans de nouvelles méthodes :
- "MousePressedObjet()"
- "MouseDraggedObjet()"
(voir : exemple_obj.java")
5 - elastiquefond.java
C'est le fond sur lequel seront posés les objets.
Attention "elastiquefond" utilise une methodes événement souris :
- "MousePressed()"
Cette méthodes vous est interdites. "elastiquefond" transmet cet événement dans une nouvelle méthode :
- "MousePressedFond()"
------------------------------
IMPORTANT :
6 - exemple_fen.java
Fichier d'exemple, Il montre comment créer un une application qui utilisera l'élastique.
7 - exemple_objet.java
Fichier d'exemple. Il présente la façon de construire vos propres objets qui seront redimensionnable.
Utilisation : new JLookAndFeelChooser(aFrame).setVisible(true);
Avantage : Prend en compte tous les look and feels du système -> réagit à l'installation de nouveaux L&F
Inconvénient : certains L&F non officiels sont relativement instables ...
import
java.awt.*;
import
java.awt.event.*;
import
javax.swing.*;
public
final
class
JLookAndFeelChooser extends
JDialog implements
ActionListener {
private
static
final
LookAndFeelInfo[] LIST_L_AND_F =
UIManager.getInstalledLookAndFeels
();
private
Frame frame;
private
JButton boutonAnnuler =
null
;
private
JButton boutonOK =
null
;
private
JComboBox comboLandF =
null
;
private
JPanel jContentPane =
null
;
private
JPanel panelB =
null
;
private
JPanel panelH =
null
;
public
JLookAndFeelChooser
(Frame frame) {
super
(frame, true
);
this
.frame =
frame;
this
.setTitle
("
Choisissez
le
Look
&
Feel...
"
);
this
.setSize
(200
, 110
);
this
.setLocationRelativeTo
(getParent
());
this
.setDefaultCloseOperation
(DO_NOTHING_ON_CLOSE);
this
.setContentPane
(getJContentPane
());
}
public
void
actionPerformed
(ActionEvent ae) {
Object source =
ae.getSource
();
if
(source =
=
boutonOK) {
closeAndApply
();
}
else
if
(source =
=
boutonAnnuler) {
close
();
}
}
private
JButton getBoutonAnnuler
() {
if
(boutonAnnuler =
=
null
) {
boutonAnnuler =
new
JButton
("
Annuler
"
);
boutonAnnuler.addActionListener
(this
);
}
return
boutonAnnuler;
}
private
JButton getBoutonOK
() {
if
(boutonOK =
=
null
) {
boutonOK =
new
JButton
("
OK
"
);
boutonOK.addActionListener
(this
);
}
return
boutonOK;
}
private
JComboBox getComboLandF
() {
if
(comboLandF =
=
null
) {
String[] names =
new
String[LIST_L_AND_F.length];
for
(byte
b =
0
; b <
LIST_L_AND_F.length; b+
+
) {
names[b] =
LIST_L_AND_F[b].getName
();
}
comboLandF =
new
JComboBox
(names);
comboLandF.setSelectedItem
(UIManager.getLookAndFeel
().getName
());
}
return
comboLandF;
}
private
JPanel getJContentPane
() {
if
(jContentPane =
=
null
) {
jContentPane =
new
JPanel
();
jContentPane.setLayout
(new
GridLayout
(2
, 1
));
jContentPane.add
(getPanelH
());
jContentPane.add
(getPanelB
());
}
return
jContentPane;
}
private
JPanel getPanelB
() {
if
(panelB =
=
null
) {
panelB =
new
JPanel
();
panelB.setLayout
(new
FlowLayout
());
panelB.add
(getBoutonOK
());
panelB.add
(getBoutonAnnuler
());
}
return
panelB;
}
private
JPanel getPanelH
() {
if
(panelH =
=
null
) {
panelH =
new
JPanel
();
panelH.setLayout
(new
FlowLayout
());
panelH.add
(getComboLandF
());
}
return
panelH;
}
private
void
close
() {
this
.setVisible
(false
);
this
.dispose
();
}
private
void
closeAndApply
() {
if
(frame !
=
null
) {
byte
b =
(byte
) comboLandF.getSelectedIndex
();
String lookAndFeel =
LIST_L_AND_F[b].getClassName
();
try
{
UIManager.setLookAndFeel
(lookAndFeel);
SwingUtilities.invokeLater
(new
Runnable
() {
public
void
run
() {
SwingUtilities.updateComponentTreeUI
(frame);
}
}
);
}
catch
(Exception e) {
e.printStackTrace
();
}
}
close
();
}
}
Petite classe de type JSpinner permettant à l'utilisateur de sélectionner un pays. Tous les pays reconnus par Java sont listés. Ils sont écrits dans la langue par défaut du système et classés par ordre alphabetique. Utile lors de la programmation de formulaires d'inscription, de gestion d'adresse et autres choses du même genre.
Boîte de choix de type JComboBox permettant à l'utilisateur de sélectionner un pays. Tous les pays reconnus par Java sont listés. Ils sont écrits dans la langue par défaut du système et classés par ordre alphabétique. Utile lors de la programmation de formulaires d'inscription, de gestion d'adresse et autres choses du même genre.
Attendre avec style et l'API Swing
Attention : Seuls les fichiers AnimatedPanel.java et InfiniteProgressPanel.java sont librement utilisables. Contactez moi pour les autres sources.