Composants graphiques – Onglets

publicité
- Lanagage JAVA –
Programmation graphique SWING
JFC
Composants graphiques – JLabel Constructeurs
JLabel()
Création d'une instance sans texte ni image
JLabel(Icon)
Création d'une instance en précisant l'image
JLabel(Icon, int)
Création d'une instance en précisant l'image et l'alignement
horizontal
JLabel(String)
Création d'une instance en précisant le texte
JLabel(String, Icon, Création d'une instance en précisant le texte, l'image et
int)
l'alignement horizontal
JLabel(String, int)
Création d'une instance en précisant le texte et l'alignement
horizontal
Composants graphiques – JLabel Méthodes
Méthodes
Rôle
setText()
Permet d'initialiser ou de modifier le texte affiché
setOpaque()
Indique si le composant est transparent (paramètre false) ou opaque
(true)
setBackground()
Indique la couleur de fond du composant (setOpaque doit être à true)
setFont()
Permet de préciser la police du texte
setForeGround()
Permet de préciser la couleur du texte
setHorizontalAlignment()
Permet de modifier l'alignement horizontal du texte et de l'icône
setVerticalAlignment()
Permet de modifier l'alignement vertical du texte et de l'icône
setHorizontalTextAlignmen
t()
Permet de modifier l'alignement horizontal du texte uniquement
setVerticalTextAlignment()
Permet de modifier l'alignement vertical du texte uniquement
setIcon()
Permet d'assigner une icôn
setDisabledIcon()
Permet d'assigner une icône dans un état désactivée
Composants graphiques – JLabel -
public class LabelPanel extends JPanel
{
public LabelPanel()
{
JLabel plainLabel = new JLabel("Plain Small Label");
add(plainLabel);
JLabel fancyLabel = new JLabel("Fancy Big Label");
Font fancyFont = new Font("Serif", Font.BOLD | Font.ITALIC, 32);
fancyLabel.setFont(fancyFont);
Icon tigerIcon = new ImageIcon("SmallTiger.gif");
fancyLabel.setIcon(tigerIcon);
fancyLabel.setHorizontalAlignment(JLabel.RIGHT);
add(fancyLabel);
}
}
Composants graphiques – AbstractButton C'est une classe abstraite dont hérite les boutons Swing JButton, JMenuItem et JToggleButton.
Cette classe définit de nombreuses méthodes dont les principales sont
Méthode
Rôle
AddActionListener
Associer un écouteur sur un évènement de type ActionEvent
AddChangeListener
Associer un écouteur sur un événement de type ChangeEvent
AddItemListener
Associer un écouteur sur un événement de type ItemEvent
doClick()
Déclencher un clic par programmation
getText()
Obtenir le texte affiché par le composant
setDisabledIcon()
Associer une icône affichée lorsque le composant à l'état désélectionné
setDisabledSelectedIcon
()
Associer une icône affichée lors du passage de la souris sur le composant à l'état
désélectionné
setEnabled()
Activer/désactiver le composant
setMnemonic()
Associer un raccourci clavier
setPressedIcon()
Associer une icône affichée lorsque le composant est cliqué
setRolloverIcon()
Associer une icône affichée lors du passage de la souris sur le composant
setRolloverSelectedIcon
()
Associer une icône affichée lors du passage de la souris sur le composant à l'état
sélectionné
setSelectedIcon()
Associer une icône affichée lorsque le composant à l'état sélectionné
setText()
Mettre à jour le texte du composant
isSelected()
Indiquer si le composant est dans l'état sélectionné
setSelected()
Mettre à jour l'état sélectionné du composant
Composants graphiques – AbstractButton import javax.swing.*;
import java.awt.event.*;
public class swing4 extends JFrame
{
public swing4()
{
super("titre de l'application");
WindowListener l = new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0); } };
addWindowListener(l);
ImageIcon imageNormale =
new ImageIcon("arrow.gif");
ImageIcon imagePassage =
new ImageIcon("arrowr.gif");
ImageIcon imageEnfoncee =
new ImageIcon("arrowy.gif");
JButton bouton = new JButton("Mon
bouton",imageNormale);
bouton.setPressedIcon(imageEnfoncee);
bouton.setRolloverIcon(imagePassage);
bouton.setRolloverEnabled(true);
getContentPane().add(bouton, "CENTER");
JPanel panneau = new JPanel();
panneau.add(bouton);
setContentPane(panneau);
setSize(200,100);
setVisible(true); }
public static void main(String [] args)
{
JFrame frame = new swing4();
}
}
public class swing4 extends JFrame
{
public swing4()
{
super("titre de l'application");
WindowListener l = new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0); }
};
addWindowListener(l);
ImageIcon imageNormale = new ImageIcon("arrow.gif");
ImageIcon imagePassage = new ImageIcon("arrowr.gif");
ImageIcon imageEnfoncee = new ImageIcon("arrowy.gif");
JButton bouton = new JButton("Mon bouton",imageNormale);
bouton.setPressedIcon(imageEnfoncee);
bouton.setRolloverIcon(imagePassage);
bouton.setRolloverEnabled(true);
getContentPane().add(bouton, "Center");
JPanel panneau = new JPanel();
panneau.add(bouton);
setContentPane(panneau);
setSize(200,100);
setVisible(true); }
public static void main(String [] args) { …}
Composants graphiques – JButton Constructeurs
Constructeur
Rôle
JButton()
JButton(String)
préciser le texte du bouton
JButton(Icon)
préciser une icône
JButton(String, Icon)
préciser un texte et une icone
Composants graphiques – JButton Exemples de déclarations
import javax.swing.*;
import java.awt.*;
public class TestJButton2
{
public static void main(String argv[])
{
JFrame f = new JFrame("ma fenetre");
f.setSize(300,100);
JPanel pannel = new JPanel();
JButton bouton1 = new JButton("Bouton 1");
pannel.add(bouton1);
JButton bouton2 = new JButton("Bouton 2");
pannel.add(bouton2);
JButton bouton3 = new JButton("Bouton 3");
pannel.add(bouton3);
f.getContentPane().add(pannel);
f.getRootPane().setDefaultButton(bouton3);
f.setVisible(true);
}
}
Composants graphiques – ButtonGroup/RadioButtonLa classe ButtonGroup permet de gérer un ensemble de boutons en garantissant qu'un seul bouton du groupe
sera sélectionné.
Pour utiliser la classe ButtonGroup, il suffit d'instancier un objet et d'ajouter des boutons (objets héritant de la
classe AbstractButton) grâce à la méthode add(). Il est préférable d'utiliser des objets de la classe JToggleButton
ou d'une de ces classes filles car elles sont capables de gérer leurs états.
import javax.swing.*;
public class TestGroupButton1
{ public static void main(String argv[])
{
JFrame f = new JFrame("ma fenetre");
JPanel pannel = new JPanel();
ButtonGroup groupe = new ButtonGroup();
JRadioButton bouton1 = new JRadioButton("Bouton 1");
JRadioButton bouton2 = new JRadioButton("Bouton 2");
JRadioButton bouton3 = new JRadioButton("Bouton 3");
groupe.add(bouton1);
groupe.add(bouton2);
groupe.add(bouton3);
pannel.add(bouton2);
pannel.add(bouton1);
pannel.add(bouton3);
}
f.getContentPane().add(pannel);
f.setVisible(true);
Composants graphiques – JCheckBox Constructeurs
Constructeur
Rôle
JCheckBox(String)
précise l'intitulé
JCheckBox(String, boolean)
précise l'intitulé et l'état
JCheckBox(Icon)
précise une icône comme intitulé
JCheckBox(Icon, boolean)
précise une icône comme intitulé et l'état
JCheckBox(String, Icon)
précise un texte et une icône comme intitulé
JCheckBox(String, Icon, boolean)
précise un texte et une icône comme intitulé et l'état
Composants graphiques – JCheckBox -
rougeButton = new JCheckBox("Rouge");
chinButton.setSelected(true);
vertButton = new JCheckBox("Vert");
glassesButton.setSelected(true);
bleuButton = new JCheckBox("Bleu");
hairButton.setSelected(true);
CheckBoxListener myListener = new CheckBoxListener();
rougeButton.addItemListener(myListener);
vertButton.addItemListener(myListener);
bleuButton.addItemListener(myListener);
...
class CheckBoxListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
...
Object source = e.getItemSelectable();
if (source == rougeButton) {…}
else if (source == vertButton) {…}
else if (source ==bleuButton) {…}
class CheckBoxListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
...
Object source = e.getItemSelectable();
if (source == chinButton) {
//...make a note of it...
} else if (source == glassesButton) {
//...make a note of it...
} else if (source == hairButton) {
//...make a note of it...
} else if (source == teethButton)
{
//...make a note of it...
}
if (e.getStateChange() == ItemEvent.DESELECTED)
//...make a note of it...
picture.setIcon(/* new icon */);
...
}}
Composants graphiques – Zone de texte -
Composants graphiques – Zone de texte - JTextComponent -
void copy()
Copier le contenu dans le presse-papier
void cut()
Couper le contenu et le mettre dans le
presse-papier
int getSelectionEnd()
Renvoyer la position du début de la
sélection
int getSelectionStart()
Renvoyer la position de la fin de la sélection
void getSelectedText()
Retourner le texte sélectionné
String getText()
Renvoyer le texte
String getText(int,int)
Renvoyer une partie du texte
bool isEditable()
Dire si le texte est éditable ou non
void Paste()
Copier le contenu du presse-papier
void select(int,int)
Sélection d’une partie du texte
void setSelectionEnd(int)
Modifier la position de fin de sélection
void selectionEnd(int)
Modifier la position de début de sélection
Void setText(String)
Modifier le texte
Composants graphiques – Zone de texte - JTextField / JPasswordField -
import javax.swing.*;
public class JTextField1
{
public static void main(String argv[])
{
JFrame f = new JFrame("ma fenetre");
f.setSize(300, 100);
JPanel pannel = new JPanel();
JTextField testField1 = new JTextField ("mon texte");
pannel.add(testField1);
f.getContentPane().add(pannel);
f.setVisible(true);
}
}
Composants graphiques – Zone de texte - JTextField / JPasswordField -
import java.awt.Dimension;
import javax.swing.*;
public class JPasswordField1
{
public static void main(String argv[])
{
JFrame f = new JFrame("ma fenetre");
f.setSize(300, 100);
JPanel pannel = new JPanel();
JPasswordField passwordField1 = new JPasswordField ("");
passwordField1.setPreferredSize(new Dimension(100,20 ));
pannel.add(passwordField1); f.getContentPane().add(pannel);
f.setVisible(true);
}
}
Composants graphiques – Zone de texte -
JTextArea -
La classe JTextArea est un composant qui permet la saisie de texte simple en mode multilignes.
il ne peut donc contenir que du texte brut sans éléments multiples de formatage.
JTexteArea propose plusieurs méthodes pour ajouter du texte dans son modèle :
 Fournir le texte en paramètre du constructeur utilisé.
 Utiliser la méthode setText() qui permet d'initialiser le texte du composant.
 Utiliser la méthode append() pour ajouter du texte à la fin dans le composant.
 Utiliser la méthode insert() permet d'insérer un texte à une position donnée.
La méthode replaceRange() permet de remplacer une partie du texte désignée par la position du
caractère de début et la position de son caractère de fin par le texte fourni en paramètre.
La propriété rows permet de définir le nombre de ligne affichée par le composant : cette
propriété peut donc être modifié lors d'un redimensionnement du composant. La propriété
lineCount en lecture seule permet de savoir le nombre de lignes dont le texte est composé.
Composants graphiques – Zone de texte - JTextArea -
import javax.swing.*;
public class JTextArea1
{
public static void main(String argv[])
{
JFrame f = new JFrame("ma fenetre");
f.setSize(300, 100); JPanel pannel = new JPanel();
JTextArea textArea1 = new JTextArea ("mon texte");
pannel.add(textArea1);
f.getContentPane().add(pannel);
f.setVisible(true);
}
}
Composants graphiques – Zone de texte - JTextArea import java.awt.Dimension;
import javax.swing.*;
public class JTextArea1
{
public static void main(String argv[])
{
JFrame f = new JFrame("ma fenetre");
f.setSize(300, 100);
JPanel pannel = new JPanel();
JTextArea textArea1 = new JTextArea ("mon texte");
JScrollPane scrollPane = new JScrollPane(textArea1);
scrollPane.setPreferredSize(new Dimension(200,70));
pannel.add(scrollPane);
f.getContentPane().add(pannel);
f.setVisible(true);
}
}
Composants graphiques – JComboBox
• Bouton + menu descendant + champ textuel éventuellement éditable.
• Possibilité d’utiliser un modèle de données ComboBoxModel.
// JComboBox
JPanel chPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
chPanel.add(new JLabel("Combobox"));
JComboBox ch = new JComboBox();
ch.addItem("Solaris");
ch.addItem("Linux");
ch.addItem("MacOS");
chPanel.add(ch);
Composants graphiques – Onglets –
JTabbedPane



Groupe une liste de conteneurs repérés par des onglets.
Création:
Ajout de conteneurs à un tabbedPane :
JTabbedPane()
JTabbedPane(int cotéOnglets)
addTab(String texteOnglet, Component composant)
addTab(String texteOnglet, Icon icone, Component composant)
addTab(String texteOnglet, Icon icone, Component composant, String toolTipText)
Composants graphiques – Onglets –
JTabbedPane

Feuille initiale
tabbedPane.setSelectedIndex(int numero)

Récupérer le choix
int tabbedPane.getSelectedIndex()

Et la feuille elle-même
Component tabbedPane.getComponentAt(int numero);

Nombre total de feuilles
int tabbedPane.getTabCount();
Composants graphiques – Onglets –
JTabbedPane
public class TestJTabbedPane1
{
public static void main(String[] args)
{
JFrame f = new JFrame("Test JTabbedPane");
f.setSize(320, 150);
JPanel pannel = new JPanel();
JTabbedPane onglets = new JTabbedPane(SwingConstants.TOP);
JPanel onglet1 = new JPanel();
JLabel titreOnglet1 = new JLabel("Onglet 1");
onglet1.add(titreOnglet1);
onglet1.setPreferredSize(new Dimension(300, 80));
onglets.addTab("onglet1", onglet1);
JPanel onglet2 = new JPanel();
JLabel titreOnglet2 = new JLabel("Onglet 2");
onglet2.add(titreOnglet2);
onglets.addTab("onglet2", onglet2);
onglets.setOpaque(true);
pannel.add(onglets);
f.getContentPane().add(pannel);
f.setVisible(true);
}
}
Méthodes :
addTab(String,component)
insertTab(String, Icon,
Component, String, index)
Remove(int)
Composants graphiques – Tableaux –
JTable
• Affiche un tableau générique
• Chaque cellule peut avoir son propre afficheur et éditeur
• L’utilisateur peut changer la taille et la position des colonnes avec la souris
• Modèle de données via AbstractTableModel
• Un des objets les plus compliqués de Swing.
Composants graphiques – Tableaux –
JTable
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class TablePlanetes extends JPanel {
TablePlanetes() {
setLayout(new BorderLayout());
JTable table = new JTable(cellules, columnNames);
add(new JScrollPane(table), BorderLayout.CENTER);
}
private Object[][] cellules = {
{ "Mercure", new Double(2440), new Integer(0), "non"},
{ "Vénus", new Double(6052), new Integer(0), "non"},
{ "Terre", new Double(6378), new Integer(1), "non"},
{ "Mars", new Double(3397), new Integer(2), "non"},
{ "Jupiter", new Double(71492), new Integer(16), "oui"},
{ "Saturne", new Double(60268), new Integer(18), "oui"},
{ "Uranus", new Double(25559), new Integer(17), "oui"},
{ "Neptune", new Double(24766), new Integer(8), "oui"},
{ "Pluton", new Double(1137), new Integer(1), "non"}
};
private String[] columnNames =
{ "Planète", "Rayon", "Lunes", "Gazeuse"};
}
Composants graphiques – Tableaux –
JTable

Les données sont accessible par un modèle. Ils peuvent être stockés ou calculés, de façon
transparente.

La classe AbstractTableModel implémente les méthodes d’un modèle de table, sauf
public int getRowCount()
public int getColumnCount()
public Object getValueAt(int ligne, int colonne)

qui retournent respectivement

le nombre de lignes

le nombre de colonnes

l’objet à afficher dans les ligne
et colonne indiquées (sa méthode
toString est utilisée).
Composants graphiques – Menu -
JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;
JCheckBoxMenuItem cbMenuItem;
JRadioButtonMenuItem rbMenuItem;
//Create the menu bar.
menuBar = new JMenuBar();
setJMenuBar(menuBar);
//Build the first menu.
menu = new JMenu("A Menu");
menuBar.add(menu);
//a group of JMenuItems
menuItem = new JMenuItem("A text-only menu item");
menu.add(menuItem);
menuItem = new JMenuItem("Both text and icon",new ImageIcon("images/middle.gif"));
menu.add(menuItem);
menuItem = new JMenuItem(new ImageIcon("images/middle.gif"));
menu.add(menuItem);
//a group of radio button menu items
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);
//a group of check box menu items
menu.addSeparator();
cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem("Another one");
menu.add(cbMenuItem);
//a submenu
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);
//Build second menu in the menu bar.
menu = new JMenu("Another Menu");
menuBar.add(menu);
Téléchargement