Canevas pour la fenêtre principale d’une application JAVA
Repose sur l’utilisation des « Actions » (voir classe interne MainAction qui implémente AbstractAction)
La classe MainAction se trouve en fin de fichier java MainFrame.java
public class MainFrame extends JFrame implements(Listeners selon besoin) {
/* *********************************************
* Action Identifiers
* ********************************************* */
static final private String LOAD = "Load something";
static final private String RUN = "Run something";
(…autres identifiants d’action selon besoin…)
static final private String ABOUT = "About";
static final private String EXIT = "Exit";
/* *********************************************
* Actions
* ********************************************* */
MainAction actionLoad = null;
MainAction actionRun = null;
(…autres actions selon ce qui a été défini par les identifiants ci-dessus…)
MainAction actionAbout = null;
MainAction actionExit = null;
/* Constructeur de la classe MainFrame */
public MainFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Titre de mon application");
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
thisWindowClosing(evt);
}
});
// build actions
initActions();
// build GUI
initGUI();
// autre code
(…autre code selon besoin…)
}
/* Méthode qui permet de créer et initialiser les actions */
private void initActions() {
// pour l’action associée à LOAD
actionLoad=new MainAction(LOAD,"icon01.gif","load description",new
Integer(KeyEvent.VK_L));
// pour l’action associée à RUN
actionRun=new MainAction(RUN,"icon02.gif","run descripion",new
Integer(KeyEvent.VK_R));
// pour l’action qui montre la boite de dialogue “About”
actionAbout=new MainAction(ABOUT,"icon03.gif","about this application",new
Integer(KeyEvent.VK_A));
// pour fermer l’application (identifiant EXIT)
actionExit=new MainAction(EXIT,"Close.gif","close application",new
Integer(KeyEvent.VK_E));
}
/* Méthode qui construit l’IHM */
private void initGUI() {
// Create menu bar
JMenuBar menubar = new JMenuBar();
this.setJMenuBar(menubar);
// File menu
JMenu menu = new JMenu("File");
menubar.add(menu);
JMenuItem mnuItem = new JMenuItem(actionLoad);menu.add(mnuItem);
menu.add(new JSeparator());
mnuItem = new JMenuItem(actionExit);menu.add(mnuItem);
// Simulation menu
menu = new JMenu("Simulation");
menubar.add(menu);
mnuItem = new JMenuItem(actionRun);menu.add(mnuItem);
(… Autres éléments de menu…)
// Help menu
menu = new JMenu("Help");
menubar.add(menu);
mnuItem = new JMenuItem(actionAbout);menu.add(mnuItem);
// Create tool bar
JToolBar toolbar = new JToolBar();
createToolBarBtn(toolbar,actionLoad);
toolbar.addSeparator();
createToolBarBtn(toolbar,actionRun);
(… Autres boutons dans la toolbar…)
toolbar.addSeparator();
createToolBarBtn(toolbar,actionExit);
contentPane.add(toolbar,BorderLayout.NORTH);
(… Vos panels et autres éléments de l’IHM…)
}
/* Méthode appelée lorsque l’on quitte l’application */
protected void thisWindowClosing(WindowEvent evt) {
System.out.println("Leaving Robot Simulator...");
}
/* Méthode qui répond à toutes les actions de l’utilisateur */
public void doAction(String actionCommand) {
if(actionCommand.equals(LOADWORLD)) {
System.out.println("Load world description");
}
else if(actionCommand.equals(RUN)) {
System.out.println("Run robot simulation...");
}
else if(…) {
(…vos autres actions…)
}
else if(actionCommand.equals(ABOUT)) {
(Afficher boite de dialogue A propos de…)
}
else if(actionCommand.equals(EXIT)) {
WindowEvent windowClosing = new WindowEvent(this,
WindowEvent.WINDOW_CLOSING);
this.dispatchEvent(windowClosing);
}
}
Ceci suppose que vos
icones et images sont dans
le package « pc.resources »
/* Méthode principale, affiche la fenêtre principale */
public static void main(String[] args) {
// Launch Main application frame
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setLocationRelativeTo(null);
frame.setBounds(100,50,900, 640);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/** Returns an ImageIcon, or null if the path was invalid. */
public static ImageIcon createIcon(String imgLocation) {
java.net.URL imageURL = MainFrame.class.getResource(imgLocation);
if (imageURL == null) {
System.err.println("Resource not found: " + imgLocation);
return null;
} else {
return new ImageIcon(imageURL);
}
}
/* Méthode qui crée et ajoute un bouton à la toolbar passée en paramètre */
public static JButton createToolBarBtn(JToolBar toolbar,AbstractAction action) {
JButton button=new JButton(action);
if (button.getIcon() != null) {button.setText("");}
toolbar.add(button);
return button;
}
/* Classe MainAction qui permet d’utiliser les Actions */
public final class MainAction extends AbstractAction {
public MainAction(String command,String iconName,String desc, Integer mnemonic) {
super(command,createIcon("/pc/resources/"+iconName));
putValue(ACTION_COMMAND_KEY, actionCommand);
putValue(SHORT_DESCRIPTION, desc);
putValue(MNEMONIC_KEY, mnemonic);
}
@Override
public void actionPerformed(ActionEvent e) {
doAction(e.getActionCommand());
}
}
}
1 / 3 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 !