Introduction Introduction Introduction Introduction Conteneur

Cours Java :Graphique 1
Java : Les objets graphiques
Cours Java :Graphique 2
Introduction
Le JDK (Java Development Kit) de base contient des
classes permettant la réalisation d'applications
avec une interface graphique pour l'utilisateur (GUI
Graphical User Interface).
Le JFC (Java Foundation Classes) : 5 APIs
(Application Programming Interface)
AWT (Abstract Window Toolkit),
Java 2D,
Accessibility,
Drag and Drop et
Swing
Cours Java :Graphique 3
Introduction
Swing est construit au dessus de AWT
Swing est plus riche que AWT
AWT utilise des composants lourds, i.e., des
composants utilisant des ressources systèmes.
Swing utilise des composants légers sauf pour les
containers primaires.
Swing est plus lent que AWT.
Cours Java :Graphique 4
Introduction
javax.swing
javax.swing.border
javax.swing.colorchooser
javax.swing.event
javax.swing.filechooser
javax.swing.plaf.* (+4)
javax.swing.table
javax.swing.tex
javax.swing.text.html.* (+1)
javax.swing.text.rtf
javax.swing.tree
javax.swing.undo
Cours Java :Graphique 5
Introduction
Dans une interface graphique on trouve
Des composants
On distingue deux types de composants
Les conteneurs de composants
Les autres composants
Une application graphique est une arborescence de
composants
Un composant est contenu dans un seul
conteneur
Cours Java :Graphique 6
Conteneur racine
Une application graphique (java ou autres) doit
dialoguer avec le système de gestion d'affichage
de la machine hôte
Le système gère des fenêtres (windows)
Un rectangle nu, dans lequel l'utilisateur va interagir
avec l'application par l'intermédiaire de boutons, menu,
saisie de texte, choix dans une liste, etc ...
L'API swing propose 3 composants qui pourront
dialoguer avec le système d'affichage de la
machine hôte.
JFrame
JDialog
JApplet
Cours Java :Graphique 7
Conteneur racine
JFrame, JDiajog, JApplet
Contient un objet "contentPane"
dans lequel on va ajouter les
autres composants
En option une barre de menu
Cours Java :Graphique 8
Conteneur racine
Création d'une application graphique
Hériter de la classe JFrame ou créer une instance
de la classe JFrame.
Spécifier un titre
Spécifier une taille
Spécifier une position
Indiquer un comportement quand on ferme la
fenêtre
DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE,
DISPOSE_ON_CLOSE, EXIT_ON_CLOSE, et enfin
Rendre visible le cadre
Cours Java :Graphique 9
import javax.swing.*;
class CadreVide extends Jframe {
public CadreVide(){
setTitle("Cadre vide");
setLocation(20, 50);
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args){
new CadreVide();
}
}
import javax.swing.*;
class CadreVide {
public static void main(String[] args){
JFrame f = new Jframe();
f.setTitle("Cadre vide");
f.setLocation(20, 50);
f.setSize(400, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Cours Java :Graphique 10
La classe Toolkit
La classe Toolkit permet d'adapter l'application
graphique avec l'environnement
Taille de l'écran
Taille d'une image
Etc ...
On récupère une instance en utilisant l'instruction
suivante:
Toolkit t = Toolkit.getDefaultToolkit() ;
Dimension d = t.getScreenSize();
setSize(d.width / 2, d.height / 2);
setLocation(d.width / 4, d.height / 4);
Des informations sur les fonts de caractères, et
autres ...
Cours Java :Graphique 11
Ajouter des composants
On ajoute des composants dans le conteneur
"contentPane" de la fenêtre principale
La méthode getContentPane() permet de récupérer
l'objet "contentPane"
La méthode setContentPane() permet de remplacer
l'objet "contentPane"
import javax.swing.*;
public class HelloWorld extends JFrame{
public HelloWorld1(){
setTitle("Hello world");
setLocation(20, 50);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(new JLabel("Hello World"));
pack();
setVisible(true);
}
public static void main(String[] args){
new HelloWorld1();
}
}
Cours Java :Graphique 12
Ajouter des composants
import javax.swing.*;
public class HelloWorld2 extends JFrame{
class MyPanel extends JPanel{
MyPanel(){
add(new JLabel("Hello World"));
}
}
public HelloWorld2(){
setTitle("Hello world");
setLocation(20, 50);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
pack();
setVisible(true);
}
public static void main(String[] args){
new HelloWorld2();
}
}
Cours Java :Graphique 13
Les composants
Tous les composants graphiques héritent de la
classe JComponent
Les possibilités d'un composant
Aide contextuelle
Dessiner et bordure
Adapter le "look&feel"
Adapter certaines propriétés
Taille et position
Accessibilité
Drag and drop
Double buffering
Association touche/action
Cours Java :Graphique 14
Les conteneurs
Les composants sont rangés dans des conteneurs
JPanel
JScrollPane
JTabbedPane
JSplitPane
JToolBar
Le conteneur JPanel, comme les autres, hérite de la
classe JComponent.
Il a pour fonction de contenir d'autres
composants
Dispose de fonctions pour gérer les composants
Cours Java :Graphique 15
Les conteneurs
Méthode Explications
void add(Component)
void add(Component, int)
void add(Component,
Object)
void add(Component,
Object, int)
void add(String,
Component)
Ajoute un composant au conteneur. Quand il est présent,
lentier indique l'index du composant dans le conteneur . Par
défaut, le premier composant à l'index 0. L'objet permet de
fournir des informations et contraintes sur le composant à
ajouter. Ces information sont utilisées par le gestionnaire de
placement(layout manager.
int getComponentCount() Get the number of components in this panel.
Component
getComponent(int)
Component
getComponentAt(int, int)
Component
getComponentAt(Point)
Component[]
getComponents()
Get the specified component or components. You can get a
component based on its index or
x, y
position.
void remove(Component)
void remove(int)
void removeAll()
Remove the specified component(s).
void
setLayout(LayoutManager)
LayoutManager getLayout()
Set or get the layout manager for this panel. The layout manager is
responsible for positioning the panel's components within the panel's
bounds according to some philosophy.
Cours Java :Graphique 16
Le composant JLabel
Le composant JLabel permet d'afficher un texte,
une image ou les deux en même temps.
Ajout d'une information textuelle
setToolTipText()
Ajout d'une image (objet de type ImageIcon)
Ajout d'un alignement
setHorizontalAlignment(int alignment),
setVerticalAlignment(int alignment)
Position du texte par rapport à l'icône
setHorizontalTextPosition(int
textPosition),setVerticalTextPosition(int
textPosition)
Cours Java :Graphique 17
Le composant JLabel
Pour indiquer la position du texte par rapport au
cadre ou encore par rapport à une image on utilise
des constantes de la classe JLabel
Pour la position horizontale
LEFT, CENTER, RIGHT, LEADING ou TRAILING (défaut)
Pour la position vertivale
TOP, CENTER (défaut), ou BOTTOM
ImageIcon icon = createIcon("images/middle.gif");
. . .
label1 = new JLabel("Image and Text",
icon,
JLabel.CENTER);
//Set the position of the text, relative to the icon:
label1.setVerticalTextPosition(JLabel.BOTTOM);
label1.setHorizontalTextPosition(JLabel.CENTER);
Cours Java :Graphique 18
Le composant JLabel
class TestLabels extends JFrame{
class MyPanel extends JPanel{
ImageIcon icon = createIcon("middle.gif");// code non présent
JLabel label1 = new JLabel("texte", JLabel.RIGHT);
JLabel label2 = new JLabel(icon);
JLabel label3 = new JLabel("texte et image",icon, JLabel.LEFT);
MyPanel(){
setLayout(new GridLayout(3, 1));
add(label1);
add(label2);
add(label3);
label2.setToolTipText("ceci est une image");
}
}
public TestLabels() {
setTitle("Test Labels");
setLocation(20, 50);
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new MyPanel());
setVisible(true);
}
public static void main(String[] args){
new TestLabels();
}
}
Cours Java :Graphique 19
Le composant JLabel
Il est possible de modifier la police de caractères
utilisée
On utilise la classe Font. Le constructeur a 3
paramètres:
Le nom de la police
Le style, et
La taille
Font thisFont;
...
thisFont = new Font("Arial", Font.PLAIN, 10);
Cours Java :Graphique 20
Le composant JLabel
Récupération des fontes disponibles
GraphicsEnvironment gEnv =
GraphicsEnvironment.getLocalGraphicsEnvironment();
String envfonts[] = gEnv.getAvailableFontFamilyNames();
for ( int i = 1; i < envfonts.length; i++ ) {
System.out.println(envfonts[i]);
Les différents styles
Font.PLAIN
Font.ITALIC,
Font.BOLD
On peut combiner plusieurs styles
Font.ITALIC | Font.BOLD
Cours Java :Graphique 21
Le composant JLabel
Pour modifier la fonte utilisée par un JLabel, on
utilise la méthode setFont(Font).
JLabel fancyLabel = new JLabel("Fancy Big Label");
Font fancyFont = new Font("Serif", Font.BOLD | Font.ITALIC, 32);
fancyLabel.setFont(fancyFont);
Pour modifier la fonte utilisée par un JLabel, on
utilise la méthode setFont(Font).
Pour modifier le texte affiché ou l'icône, on utilise
les méthodes
void setText(String), void setIcon(Icon)
Pour récupérer le texte affiché ou l'icône, on utilise
les méthodes
String getText(), Icon getIcon()
Cours Java :Graphique 22
Le composant JLabel
Il est possible de formater le texte d'un JLabel en
utilisant les balises HTML.
Il suffit pour cela de commencer le texte par la
balise "<html>"
JLabel plainLabel = new
JLabel("<html><b><u>T</u>wo</b><br>lines</html>");
Cours Java :Graphique 23
La classe AbstractButton
La classe abstraite AbstractButton est ancêtre de
nombreux types d'objets qui vont permettre à
l'utilisateur d'interagir avec l'application
JButton
JToggleButton
JCheckBox, JRadioButton
JMenuItem
JCheckBoxMenuItem, JMenu, JRadioButtonMenuItem
Cours Java :Graphique 24
Le composant JButton
Comme pour le JLabel, le JButton accepte un texte
et/ou une image
A la différence du JLabel, il permet d'interagir avec
l'utilisateur
L'utilisateur peut cliquer sur le JButton comme
sur un bouton poussoir.
Il est possible d'inhiber l'action sur un JButton avec
la méthode
setEnable(boolean b)
Cours Java :Graphique 25
Le composant JToggleButton
Le composant JToggleButton est un bouton qui a
deux états (on/off)
public static JPanel toggleButton() {
JPanel panel = new JPanel();
// Set the layout to a GridLayout
panel.setLayout(new GridLayout(4, 1, 10, 10));
panel.add(new JToggleButton("Fe"));
panel.add(new JToggleButton("Fi"));
panel.add(new JToggleButton("Fo"));
panel.add(new JToggleButton("Fum"));
panel.setPreferredSize(new Dimension(200,200));
return panel;
}
Le composant JToggleButton "Fi"
est on alors que les autres sont
off.
Cours Java :Graphique 26
Le composant JCheckBox
Le composant JCheckBox est un sous composant de
JToggleButton.
Il ajoute une représentation particulière lorsque le
bouton en en position on.
JPanel panel = new JPanel(new GridLayout(0, 1));
panel.add(new JCheckBox("un"));
panel.add(new JCheckBox("deux"));
panel.add(new JCheckBox("trois"));
panel.add(new JCheckBox("quatre"));
panel.setPreferredSize(new Dimension(80,100));
Le composant JCheckBox "un" et
"trois" sont on alors que les
autres sont off.
Cours Java :Graphique 27
Le composant JRadioButton
Le composant JRadioButton est un sous composant
de JToggleButton.
Le composant JRadioButton est souvent utilisé dans
un groupe de boutons et pour lequel un seul
bouton est on à un moment donné.
A la création les JRadioButton sont ajoutés à un
objet de la classe ButtonGroup.
Si l'utilisateur sélectionne un bouton alors les
autres boutons du groupe sont déselectionnés.
Cours Java :Graphique 28
Le composant JRadioButton
Voici un exemple qui montre l'utilisation du
composant JRadioButton
public static JPanel radioButton() {
JPanel panel = new JPanel(new GridLayout(0, 1));
ButtonGroup groupe = new ButtonGroup();
String[] labels = { "un", "deux", "trois", "quatre" };
for (int i = 0; i < 4; i++) {
JRadioButton b = new JRadioButton(labels[i]);
groupe.add(b);
panel.add(b);
}
panel.setPreferredSize(new Dimension(80, 100));
return panel;
}
Le composant JRadioButton "deux"
est on les autres sont off.
Cours Java :Graphique 29
Le composant JMenuItem
Les composants JMenuItem et ses composants fils
sont utilisés dans des menus.
Cours Java :Graphique 30
Le composant JMenuItem
Cours Java :Graphique 31
Le composant JMenuItem
public static JMenuBar menuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu, submenu;
JMenuItem menuItem;
JRadioButtonMenuItem rbMenuItem;
JCheckBoxMenuItem cbMenuItem;
menu = unJMenu("Menu UN");
menuBar.add(menu);
menu = deuxJMenu("Menu DEUX");
menuBar.add(menu);
return menuBar;
}
public static JMenu deuxJMenu(String s) {
JMenu menu = new JMenu(s);
JMenu submenu;
JMenuItem menuItem;
menuItem = new JMenuItem("A text-only menu item");
menu.add(menuItem);
menu.addSeparator();
submenu = new JMenu("A submenu");
menuItem = new JMenuItem("An item in the submenu");
submenu.add(menuItem);
menuItem = new JMenuItem("Another item");
submenu.add(menuItem);
menu.add(submenu);
return menu;
}
Cours Java :Graphique 32
Le composant JMenuItem
public static JMenu unJMenu(String s) {
JMenu menu = new JMenu(s);
JMenuItem menuItem;
JRadioButtonMenuItem rbMenuItem;
JCheckBoxMenuItem cbMenuItem;
menuItem = new JMenuItem("A text-only menu item");
menu.add(menuItem);
menu.addSeparator();
ButtonGroup group = new ButtonGroup();
rbMenuItem = new JRadioButtonMenuItem("A radio button menu
item");
rbMenuItem.setSelected(true);
group.add(rbMenuItem);
menu.add(rbMenuItem);
rbMenuItem = new JRadioButtonMenuItem("Another one");
group.add(rbMenuItem);
menu.add(rbMenuItem);
menu.addSeparator();
cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem("Another one");
menu.add(cbMenuItem);
return menu;
}
Cours Java :Graphique 33
Le composant JTextComponent
Le composant JTextComponent permet à
l'utilisateur de saisir du texte.
Cours Java :Graphique 34
Le composant JTextComponent
Utilisation des composants JTextField,
JPasswordField, JFormattedTextField
Cours Java :Graphique 35
Le composant JTextComponent
public static JPanel textfield() {
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
JPanel panelIn = new JPanel();
JTextField textField = new JTextField(10);
JLabel label = new JLabel("saisie texte : ");
panelIn.add(label); panelIn.add(textField);
panel.add(panelIn);
panelIn = new JPanel();
label = new JLabel("saisie mot de passe : ");
JPasswordField passwordField = new JPasswordField(10);
panelIn.add(label); panelIn.add(passwordField);
panel.add(panelIn);
panelIn = new JPanel();
label = new JLabel("saisie mot de passe : ");
JFormattedTextField ftf = new JFormattedTextField(
java.util.Calendar.getInstance().getTime());
panelIn.add(label); panelIn.add(ftf);
panel.add(panelIn);
panel.setPreferredSize(new Dimension(400, 100));
return panel;
}
Cours Java :Graphique 36
Le composant JDialog
Il est parfois utilise de disposer de fenêtres de
dialogue qui apparaissent lors de l'utilisation d'une
application graphique.
Ces fenêtres de dialogue dépendent de la fenêtre
principale (JFrame)
Ces fenêtres peuvent être modales i.e. Il est
impossible d'interagir avec la fenêtre principale
tant qu'elles sont ouvertes.
Le composant JOptionPane est un conteneur qui
utilise le composant JDialog pour s'afficher
Il existe d'autres composants qui utilise le même
principe JFileChooser, JColorChooser et
ProgressMonitor
Cours Java :Graphique 37
Le composant JOptionPane
Le composant JOptionPane est modale
Permet de donner une information ou d'interroger
l'utilisateur
showMessageDialog(...) visualise un message
showConfirmDialog(...) demande confirmation
showInputDialog(...) demande la saisie d'une
information
showOptionDialog(...) permet de faire un mixte
des boites de dialogues précédentes.
Cours Java :Graphique 38
Le composant JOptionPane
public class UtilisationDialogue {
public static void main(String[] args) {
JFrame frame = new JFrame("Test Boite de dialogue");
frame.getContentPane().add( new JLabel("Affiche une boite de
dialogue"));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane.showMessageDialog(frame, "Non, ce n'est pas le moment
de dormir !");
}
}
Les paramètres de la méthodes sont
La fenêtre principale
Le message à afficher
Par défaut, c'est un message d'information
Cours Java :Graphique 39
Le composant JOptionPane
Les principaux paramètres
La fenêtre principale
Le message qui est un objet
Object[] traite chaque élément du tableau
Componant affiche le composant
Icon place l'image dans un JLabel
Autres transforme en String (méthode toString()) et
place lesultat dans un JLabel
Le type de message : ERROR_MESSAGE,
INFORMATION_MESSAGE, WARNING_MESSAGE,
QUESTION_MESSAGE, PLAIN_MESSAGE
Cours Java :Graphique 40
Le composant JOptionPane
Pour les boites de dialogues avec interaction, on
trouve en plus un paramètre option qui peut
prendre les valeurs
DEFAULT_OPTION, YES_NO_OPTION,
YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
retour = JOptionPane.showConfirmDialog(frame, "Non, ce n'est pas
le moment de dormir !", "Demande d'attention",
JOptionPane.YES_NO_CANCEL_OPTION);
String s;
switch (retour) {
case JOptionPane.YES_OPTION: s = "Choix Yes"; break;
case JOptionPane.NO_OPTION: s = "Choix No"; break;
case JOptionPane.CANCEL_OPTION: s = "Choix Cancel"; break;
case JOptionPane.CLOSED_OPTION: s = "Choix Closed"; break;
}
System.out.println(s);
}
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !