Recherche…


Remarques

Quitter l'application sur la fenêtre close

Il est facile d'oublier de quitter l'application lorsque la fenêtre est fermée. N'oubliez pas d'ajouter la ligne suivante.

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

Création d'une fenêtre vide (JFrame)

Créer le JFrame

Créer une fenêtre est facile. Il suffit de créer un JFrame .

JFrame frame = new JFrame();

Titrer la fenêtre

Vous voudrez peut-être donner un titre à votre fenêtre. Vous pouvez le faire en passant une chaîne lors de la création de JFrame ou en appelant frame.setTitle(String title) .

JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");

Définition de la taille de la fenêtre

La fenêtre sera aussi petite que possible lorsqu'elle aura été créée. Pour l'agrandir, vous pouvez définir explicitement sa taille:

frame.setSize(512, 256);

Ou vous pouvez avoir la taille du cadre elle-même en fonction de la taille de son contenu avec la méthode pack() .

frame.pack();

Les méthodes setSize() et pack() s'excluent mutuellement, utilisez donc l'une ou l'autre.

Que faire sur Window Close

Notez que l'application ne se fermera pas lorsque la fenêtre aura été fermée. Vous pouvez quitter l'application après la fermeture de la fenêtre en indiquant à JFrame de le faire.

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

Alternativement, vous pouvez dire à la fenêtre de faire autre chose quand elle est fermée.

WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action

Création d'un volet de contenu

Une étape facultative consiste à créer un volet de contenu pour votre fenêtre. Ce n'est pas nécessaire, mais si vous le souhaitez, créez un JPanel et appelez frame.setContentPane(Component component) .

JPanel pane = new JPanel();
frame.setContentPane(pane);

Montrer la fenêtre

Après l'avoir créé, vous souhaiterez créer vos composants, puis afficher la fenêtre. Montrer la fenêtre est fait comme tel.

frame.setVisible(true);

Exemple

Pour ceux d'entre vous qui aiment copier et coller, voici un exemple de code.

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane

frame.setVisible(true); //Show the window

Exemple de sortie

Ajout de composants

Un composant est une sorte d'élément d'interface utilisateur, tel qu'un bouton ou un champ de texte.

Créer un composant

La création de composants est presque identique à la création d'une fenêtre. Au lieu de créer un JFrame , vous créez ce composant. Par exemple, pour créer un JButton , procédez comme suit.

JButton button = new JButton();

De nombreux composants peuvent recevoir des paramètres lors de leur création. Par exemple, un bouton peut être doté d'un texte à afficher.

JButton button = new JButton("Super Amazing Button!");

Si vous ne souhaitez pas créer de bouton, vous trouverez une liste de composants communs dans un autre exemple de cette page.

Les paramètres qui peuvent leur être transmis varient d'un composant à l'autre. Un bon moyen de vérifier ce qu'ils peuvent accepter est de regarder les paramètres de votre IDE (si vous en utilisez un). Les raccourcis par défaut sont répertoriés ci-dessous.

  • IntelliJ IDEA - Windows / Linux: CTRL + P
  • IntelliJ IDEA - OS X / macOS: CMD + P
  • Eclipse: CTRL + SHIFT + Space
  • NetBeans: CTRL + P

Exemple d'information sur les paramètres de méthode dans IntelliJ IDEA

Affichage du composant

Une fois qu'un composant a été créé, vous définissez généralement ses paramètres. Après cela, vous devez le placer quelque part, par exemple sur votre JFrame ou sur votre volet de contenu si vous en avez créé un.

frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever

Exemple

Voici un exemple de création d'une fenêtre, de définition d'un volet de contenu et d'ajout d'un bouton.

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane

JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane

frame.setVisible(true); //Show the window

Exemple de sortie

Définition des paramètres pour les composants

Les composants ont différents paramètres pouvant être définis pour eux. Ils varient d'un composant à l'autre. Par conséquent, un bon moyen de définir les paramètres des composants est de commencer à saisir componentName.set et de laisser les méthodes de saisie semi-automatique (si vous utilisez un IDE) de votre IDE suggérer. Le raccourci par défaut dans de nombreux IDE, s'il ne s'affiche pas automatiquement, est CTRL + Space .

Autocomplétion dans IntelliJ IDEA

Paramètres communs partagés entre tous les composants

La description Méthode
Définit la plus petite taille possible du composant (uniquement si le gestionnaire de disposition respecte la propriété minimumSize) setMinimumSize(Dimension minimumSize)
Définit la taille maximale du composant (uniquement si le gestionnaire de disposition respecte la propriété maximumSize) setMaximumSize(Dimension maximumSize)
Définit la taille préférée du composant (uniquement si le gestionnaire de disposition respecte la propriété preferredSize) setPreferredSize(Dimension preferredSize)
Affiche ou masque le composant setVisible(boolean aFlag)
Définit si le composant doit répondre à une entrée utilisateur setEnabled(boolean enabled)
Définit la police de texte setFont(Font font)
Définit le texte de l'info-bulle setToolTipText(String text)
Définit la couleur d'arrière-plan du composant setBackground(Color bg)
Définit la couleur de premier plan (couleur de police) du composant setForeground(Color bg)

Paramètres communs dans d'autres composants

Composants communs La description Méthode
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField Définit le texte affiché setText(String text)
JProgressBar , JScrollBar , JSlider , JSpinner Définir une valeur numérique entre les valeurs min et max du composant setValue(int n)
JProgressBar , JScrollBar , JSlider , JSpinner Définit la plus petite valeur possible pour la propriété value setMinimum(int n)
JProgressBar , JScrollBar , JSlider , JSpinner Set est la plus grande valeur possible que la propriété value puisse être setMaxmimum(int n)
JCheckBox , JToggleBox Définir si la valeur est vraie ou fausse (par ex.: Une case à cocher doit-elle être cochée?) setSelected(boolean b)

Composants communs

La description Classe
Bouton JButton
Case à cocher JCheckBox
Menu déroulant / Zone de liste déroulante JComboBox
Étiquette JLabel
liste JList
Barre de menu JMenuBar
Menu dans une barre de menu JMenu
Article dans un menu JMenuItem
Panneau JPanel
Barre de progression JProgressBar
Bouton radio JRadioButton
Barre de défilement JScrollBar
Curseur JSlider
Spinner / Number picker JSpinner
Table JTable
Arbre JTree
Zone de texte / zone de texte multiligne JTextArea
Champ de texte JTextField
Barre d'outils JToolBar

Création d'interfaces utilisateur interactives

Avoir un bouton là-bas est bien, mais à quoi ça sert si cliquer ne fait rien? ActionListener s sont utilisés pour indiquer à votre bouton ou à un autre composant de faire quelque chose lorsqu'il est activé.

L'ajout d' ActionListener s se fait comme tel.

buttonA.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        //Code goes here...
        System.out.println("You clicked the button!");
    }
});

Ou, si vous utilisez Java 8 ou supérieur ...

buttonA.addActionListener(e -> {
    //Code
    System.out.println("You clicked the button!");
});

Exemple (Java 8 et supérieur)

JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed

JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);

JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
    //Code goes here
    System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);

frame.setVisible(true); //Show the window

Organisation des composants

L'ajout de composants les uns après les autres entraîne une interface utilisateur difficile à utiliser, car les composants sont tous quelque part . Les composants sont classés de haut en bas, chaque composant dans une "rangée" distincte.

Pour remédier à cela et vous fournir en tant que développeur une possibilité de mettre en page facilement des composants, Swing a LayoutManager .

Ces LayoutManagers sont abordés plus en détail dans Introduction aux gestionnaires de mise en page ainsi que dans les rubriques distinctes de Layout Manager:



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow