====Fenêtre basique====
{{:lang:java:gui:swing:swing.png|Vue de la fenêtre standars Swing}}
package org.llgc;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
@SuppressWarnings ("serial")
public class Swing extends JFrame
{
public static void main (final String[] args)
{
new Swing ();
}
public Swing ()
{
initialize ();
}
private void initialize ()
{
setTitle ("Bonjour");
// addWindowListener (new ActionClose());
setDefaultCloseOperation (DISPOSE_ON_CLOSE);
getContentPane ().setLayout (new BorderLayout ()); // Le add place les
// composants les uns à la suite des autres plutôt que les uns sur les
// autres.
getContentPane ().add (new JLabel ("Titre", SwingConstants.CENTER), BorderLayout.NORTH);
JPanel pnlSouth = new JPanel (new GridLayout (0, 2, 12, 12));
pnlSouth.setDoubleBuffered (true);
JLabel lbl = new JLabel ("Nom");
lbl.setHorizontalAlignment (SwingConstants.CENTER);
pnlSouth.add (lbl, BorderLayout.CENTER);
JTextField bt = new JTextField (25);
pnlSouth.add (bt, BorderLayout.CENTER);
lbl = new JLabel ("Pays");
lbl.setHorizontalAlignment (SwingConstants.CENTER);
pnlSouth.add (lbl, BorderLayout.CENTER);
JComboBox lstPays = new JComboBox ();
lstPays.addItem ("France");
lstPays.addItem ("Espagne");
lstPays.addItem ("Angleterre");
lstPays.addItem ("Belgique");
pnlSouth.add (lstPays, BorderLayout.CENTER);
lbl = new JLabel ("Civilité");
lbl.setHorizontalAlignment (SwingConstants.CENTER);
pnlSouth.add (lbl, BorderLayout.CENTER);
JPanel pnlCiv = new JPanel (new BorderLayout ());
JRadioButton optMonsieur = new JRadioButton ("Monsieur");
JRadioButton optMadame = new JRadioButton ("Madame");
ButtonGroup grpCivil = new ButtonGroup ();
grpCivil.add (optMadame);
grpCivil.add (optMonsieur);
pnlCiv.add (optMadame, BorderLayout.EAST);
pnlCiv.add (optMonsieur, BorderLayout.WEST);
pnlSouth.add (pnlCiv, BorderLayout.CENTER);
JPanel pnl2 = new JPanel ();
// pnl2.setSize (new Dimension (500, 500));
// pnlSouth.setSize (new Dimension (500, 500));
pnl2.add (pnlSouth, BorderLayout.CENTER);
pnlSouth.setLayout (new GridLayout (0, 2, 20, 20));
getContentPane ().add (pnl2, BorderLayout.CENTER);
pnlSouth = new JPanel (new FlowLayout ());
JButton button1 = new JButton (new ActionClose ("Fermer"));
JButton button2 = new JButton (new ActionClose ("Fermer bis"));
pnlSouth.add (button1, BorderLayout.WEST);
pnlSouth.add (button2, BorderLayout.EAST);
getContentPane ().add (pnlSouth, BorderLayout.SOUTH);
// setSize (280, 100);
pack ();
setVisible (true);
}
private class ActionClose extends AbstractAction
{
public ActionClose (String name)
{
super (name);
}
@Override
public void actionPerformed (ActionEvent arg0)
{
dispose ();
}
}
}
====Menu et barre d'outils====
{{:lang:java:gui:swing:swing2.png|Vue de la fenêtre Swing2 avec son menu et sa barre d'outils}}
package org.llgc;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import javax.swing.AbstractAction;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.text.JTextComponent;
import javax.swing.text.PlainDocument;
public class Swing2 extends JFrame implements ActionListener
{
private static final long serialVersionUID = -7065885007988227830L;
private JTextComponent editor;
private Swing2 ()
{
initialize ();
}
private void initialize ()
{
Container c = getContentPane ();
c.setLayout (new BorderLayout ());
setTitle ("Editeur");
setDefaultCloseOperation (DISPOSE_ON_CLOSE);
setJMenuBar (createMenu ());
c.add (createToolBar (), BorderLayout.NORTH);
editor = createTextComponent ();
c.add (new JScrollPane (editor), BorderLayout.CENTER);
}
private JMenuBar createMenu ()
{
JMenuBar barre_de_menus = new JMenuBar ();
JMenu menu_personnel = new JMenu ("Fichier");
JMenuItem item1 = new JMenuItem (new ActionNew ("Nouveau", new ImageIcon ("img/newdoc.png")));
JMenuItem item2 = new JMenuItem (new ActionOpen ("Ouvrir", new ImageIcon ("img/open.png")));
JMenuItem item4 = new JMenuItem (new ActionClose ("Fermer"));
barre_de_menus.add (menu_personnel);
menu_personnel.add (item1);
menu_personnel.add (item2);
menu_personnel.addSeparator ();
menu_personnel.add (item4);
return barre_de_menus;
}
private JToolBar createToolBar ()
{
JToolBar tool = new JToolBar ();
tool.add (new JButton (new ActionNew (new ImageIcon ("img/newdoc.png"))));
tool.add (new JButton (new ActionOpen (new ImageIcon ("img/open.png"))));
tool.addSeparator ();
return tool;
}
private JTextComponent createTextComponent ()
{
JTextArea txt = new JTextArea ();
return txt;
}
public static void main (String[] args)
{
Swing2 frm = new Swing2 ();
frm.pack ();
frm.setVisible (true);
}
public JTextComponent getEditor ()
{
return editor;
}
public class ActionNew extends AbstractAction
{
private static final long serialVersionUID = -9121532899728292588L;
public ActionNew (String name, Icon icon)
{
super (name, icon);
}
public ActionNew (Icon icon)
{
super ("", icon);
}
public ActionNew (String name)
{
super (name);
}
@Override
public void actionPerformed (ActionEvent e)
{
getEditor ().setDocument (new PlainDocument ());
}
}
private class ActionOpen extends AbstractAction
{
private static final long serialVersionUID = -3137082881796863964L;
public ActionOpen (Icon icon)
{
super ("", icon);
}
public ActionOpen (String name, Icon icon)
{
super (name, icon);
}
@Override
public void actionPerformed (ActionEvent e)
{
JFileChooser chooser = new JFileChooser ();
chooser.setFileFilter (new FileNameExtensionFilter ("Fichier txt", "txt"));
if (chooser.showOpenDialog (null) == JFileChooser.APPROVE_OPTION)
{
File fileName = chooser.getSelectedFile ();
try (BufferedReader br = new BufferedReader (
new InputStreamReader (new FileInputStream (fileName), Charset.forName ("UTF-8"))))
{
char[] buffer = new char[(int) fileName.length ()];
if (br.read (buffer, 0, (int) fileName.length ()) != fileName.length ())
{
throw new IOException ("Erreur lors de la lecture du fichier");
}
/*
* Document doc = new PlainDocument (); doc.insertString (0, new
* String (buffer), null); getEditor ().setDocument (doc);
*/
getEditor ().setText (new String (buffer));
}
catch (IOException e1)
{
e1.printStackTrace();
return;
}
}
}
}
private class ActionClose extends AbstractAction
{
private static final long serialVersionUID = 1813412014719789012L;
public ActionClose (String name)
{
super (name);
}
@Override
public void actionPerformed (ActionEvent e)
{
dispose ();
}
}
@Override
public void actionPerformed (ActionEvent e)
{
}
}
====Tableau====
{{:lang:java:gui:swing:swing3.png|Vue de la fenêtre Swing3 avec composant graphique tableau}}
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
public class Swing3
{
private static final int imageHeight = 30; // hauteur de ligne
private JTable table;
public static void main (String[] args)
{
new Swing3 ().initialize ();
}
public void initialize ()
{
JFrame frame = new JFrame ();
frame.setTitle ("Exemple de JTable");
ImageIcon icon1 = new ImageIcon ("img/edit.png");
ImageIcon icon2 = new ImageIcon ("img/delete.png");
ImageIcon icon3 = new ImageIcon ("img/call.png");
Object[] entete = { "Edit", "Delete", "Call", "Id", "Lastame", "Firstname", "IPAddress" };
Object[][] donnees = { { icon1, icon2, icon3, "1", "Dupont", "Pierre", "192.168.1.122" },
{ icon1, icon2, icon3, "2", "Durand", "Jacques", "192.168.1.123" } };
DefaultTableModel tableModel = new DefaultTableModel (donnees, entete)
{
private static final long serialVersionUID = 756473841910394607L;
@SuppressWarnings ({ "unchecked", "rawtypes" })
@Override
public Class getColumnClass (int column)
{
if (column < 3)
return ImageIcon.class;
return Object.class;
}
};
table = new JTable (tableModel);
table.setRowHeight (imageHeight);
table.setAutoResizeMode (JTable.AUTO_RESIZE_OFF);
table.getColumn ("Edit").setPreferredWidth (30);
table.getColumn ("Delete").setPreferredWidth (30);
table.getColumn ("Call").setPreferredWidth (30);
table.getColumn ("Id").setPreferredWidth (30);
table.getColumn ("Lastame").setPreferredWidth (100);
table.getColumn ("Firstname").setPreferredWidth (100);
table.getColumn ("IPAddress").setPreferredWidth (100);
table.addMouseListener (new MouseAdapter ()
{
@Override
public void mouseClicked (java.awt.event.MouseEvent evt)
{
int row = table.rowAtPoint (evt.getPoint ());
int col = table.columnAtPoint (evt.getPoint ());
if (row >= 0 && col >= 0)
{
switch (col)
{
case 0:
System.out.println ("Edit " + table.getValueAt (row, 3));
break;
case 1:
System.out.println ("Delete " + table.getValueAt (row, 3));
break;
case 2:
System.out.println ("Call " + table.getValueAt (row, 3));
break;
default:
break;
}
}
}
});
frame.add (new JScrollPane (table), BorderLayout.CENTER);
frame.setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE);
frame.pack ();
frame.setVisible (true);
}
}