|
| | Évaluation formative
Quiz volet développement
-
Indiquez parmi les choix suivants lesquels représentent des entités
pouvant générer des événements :
- Le système d'exploitation
- Le système de fenêtrage
- Des instruction du programme lui-même
-
Pour chacune des situations suivantes, déterminez si le serveur graphique, le gestionnaire
de fenêtres, ou si les deux interviennent. Expliquez brièvement votre réponse.
- Le tracage d'un cercle dans une fenêtre par l'application
- L'iconisation des fenêtres du "desktop" par une action de l'utilisateur
- La transmission d'un interruption matérielle (interrupt) comme un événement à l'application
- Le changement de "focus" lorsque la souris passe d'une fenêtre à l'autre (sans cliquer)
-
Pratiquement la totalité des systèmes de fenêtrage modernes nécessitent que les fenêtres définissent une fonction de
redessinage (redraw) ou (repaint)). Toutefois, il existe une alternative à cette approche. Quelle est-elle?
-
Vrai ou faux? Expliquez au besoin.
- Avec X, le mécanisme des ressources permet de changer le nom des boutons lors de l'invoquation, sans avoir à recompiler l'application
- Swing permet de développer des applications multi-plateformes par l'adoption de l'architecture client-serveur
- La fonction d'aiguillage (dispatching) d'événement est associée au controlleur dans le modèle MVC
- Par rapport au modèle MVC, le client dans l'architecture client-serveur de X représente le "view", tandis que le serveur représente le "controller"
- X-Windows utilise une architecture client-serveur programmable
- La technique de fonction de rappel (callback) permet d'implanter dynamiquement la communication entre objets
- Une application peut garder le contrôle de la souris et du clavier même si celle-ci sort du rectangle de la fenêtre
- Le gestionnaire de fenêtre contrôle le comportement du "focus" (entrées du clavier)
- Un des avantages principaux de l'architecture client-serveur est la portabilité entre systèmes d'exploitation
- Avec Java Swing, le filtrage des événements se fait par le mécanisme de surcharge des méthodes
- Le mécanisme de "signals and slots" de Qt permet de remplacer celui des fonctions de rappel de différentes boîtes à outils.
- Commentez le code suivant :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ComboBoxDemo extends JPanel
implements ActionListener {
JLabel picture;
public ComboBoxDemo() {
super(new BorderLayout());
String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
// ****************
// ****************
JComboBox petList = new JComboBox(petStrings);
petList.setSelectedIndex(4);
petList.addActionListener(this);
//Set up the picture.
picture = new JLabel();
picture.setFont(picture.getFont().deriveFont(Font.ITALIC));
picture.setHorizontalAlignment(JLabel.CENTER);
updateLabel(petStrings[petList.getSelectedIndex()]);
picture.setBorder(BorderFactory.createEmptyBorder(10,0,0,0));
//The preferred size is hard-coded to be the width of the
//widest image and the height of the tallest image + the border.
//A real program would compute this.
picture.setPreferredSize(new Dimension(177, 122+10));
//Lay out the demo.
add(petList, BorderLayout.PAGE_START);
add(picture, BorderLayout.PAGE_END);
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
}
// ****************
// ****************
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
String petName = (String)cb.getSelectedItem();
updateLabel(petName);
}
protected void updateLabel(String name) {
ImageIcon icon = createImageIcon("images/" + name + ".gif");
picture.setIcon(icon);
picture.setToolTipText("A drawing of a " + name.toLowerCase());
if (icon != null) {
picture.setText(null);
} else {
picture.setText("Image not found");
}
}
/** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = ComboBoxDemo.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
// ****************
// ****************
// ****************
private static void createAndShowGUI() {
// ****************
JFrame.setDefaultLookAndFeelDecorated(true);
// ****************
JFrame frame = new JFrame("ComboBoxDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ****************
JComponent newContentPane = new ComboBoxDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
// ****************
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
// ****************
// ****************
// ****************
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
|