import javax.swing.*;
public class HelloWorldSwing implements Runnable {
@Override
public void run() {
//Create the window
JFrame f = new JFrame("HelloWorldSwing");
//Set the behavior for when the window is closed
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add a label
f.getContentPane().add(new JLabel("Hello world!"));
//Set the window size from its components size
f.pack();
//By default, the window is not visible; make it visible
f.setVisible(true);
}
public static void main(String[] args) {
//Run the application at the correct time in the event queue
SwingUtilities.invokeLater( new HelloWorldSwing() );
}
}
Le nom des conteneurs de javax.swing commencent par J.
Chaque application graphique possède au moins un conteneur de haut-niveau:
Ces conteneurs possèdent un panneau d’affichage (accessible par getContentPane(), setContentPane()) sur lequel vous pouvez disposer des composants (qui dérivent de JComponent).
Consultez l’API standard pour la liste des composants disponibles dans javax.swing.
Habituellement, on crée un nouveau panneau d’affichage de zéro en utilisant JPanel, puis on l’ajoute au conteneur de haut niveau (typiquement de type JFrame) avec setContentPane().
//Create a panel and add components to it.
JPanel contentPane = new JPanel();
contentPane.add(someComponent);
contentPane.add(anotherComponent);
topLevelContainer.setContentPane(contentPane);
Il existe des modèles pour disposer les composants graphiques sur un panneau d’affichage:
Consultez la page des layout managers pour avoir un aperçu de ces modèles.
Le modèle par défaut est FlowLayout. Mais il est très simple d’en utiliser un autre en le passant en paramètre, soit au constructeur de JPanel, soit à la méthode setLayout().
JPanel contentPane = new JPanel(new BorderLayout());
//or:
//JPanel contentPane = new JPanel();
//contentPane.setLayout( new BorderLayout() );
contentPane.add(someComponent, BorderLayout.CENTER);
contentPane.add(anotherComponent, BorderLayout.PAGE_END);
topLevelContainer.setContentPane(contentPane);
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/*
* Button listener
*/
public class ButtonBeeper implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//print 'beep' to the standard output
//when an action event is received
System.out.println("beep");
}
}
import javax.swing.*;
public class BeeperApp implements Runnable {
@Override
public void run() {
//Create the window.
JFrame f = new JFrame("Beeper");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Add a button with an action listener
JButton b = new JButton("Click me");
b.addActionListener( new ButtonBeeper() );
f.getContentPane().add(b);
//Display the window.
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
//Run the application at the correct time in the event queue.
SwingUtilities.invokeLater( new BeeperApp() );
}
}
Consultez l’API standard pour la liste des événements disponibles dans java.awt.event, le tutoriel Evénements, ainsi que les How To consacrés aux composants pour savoir quel type d’événement ils déclenchent.
Le couple ActionEvent / ActionListener est le plus commun.