Interfaces graphiques
Exemple de “Frame” (fenêtre avec boutons)
import java.awt.*;
public class SimpleFrameMain {
public static void main(String[] args) {
SimpleFrame fenetre = new SimpleFrame();
}
}
class SimpleFrame extends Frame {
public SimpleFrame() {
super("Test de fenêtre");
this.setSize(400, 600);
this.setVisible(true);
this.add(new Label("hello"));
}
}
Exemple de Border Layout
import java.awt.*;
class SimpleBorderLayout extends Frame {
SimpleBorderLayout() {
super("Fun Border layout");
this.setSize(400, 600);
// Configuration
this.setLayout(new BorderLayout());
this.setFont(new Font("Arial", Font.BOLD, 15));
// Ajout d'éléments
this.add(new Label("En haut"), BorderLayout.NORTH);
this.add(new Label("En bas ..."), BorderLayout.SOUTH);
Panel bluePanel = new Panel();
bluePanel.setBackground(Color.BLUE);
Panel redPanel = new Panel();
redPanel.setBackground(Color.RED);
this.add(bluePanel, BorderLayout.WEST);
this.add(redPanel, BorderLayout.EAST);
this.add(new Button("Click me !"));
this.setVisible(true);
}
public static void main(String[] args) {
new SimpleBorderLayout();
}
}
Grid Layout
import java.awt.*;
class SimpleGridLayout extends Frame {
SimpleGridLayout() {
super("Super Grid Layout");
this.setSize(400, 600);
this.setLayout(new GridLayout(2, 2));
Color[] colors = new Color[]{Color.BLUE, Color.BLACK, Color.ORANGE, Color.MAGENTA};
for (Color color : colors) {
Panel panel = new Panel();
panel.setBackground(color);
this.add(panel);
}
this.setVisible(true);
}
public static void main(String[] args) {
new SimpleGridLayout();
}
}
Clic bouton et fermeture de fenêtre
import java.awt.*;
import java.awt.event.*;
class SimpleEventFrame extends CloseableFrame {
private final Label label;
private int counter = 0;
SimpleEventFrame() {
super("Event listening");
this.setSize(400, 600);
setLayout(new BorderLayout());
label = new Label("Et si on cliquait ?");
label.setFont(new Font("Arial", Font.BOLD, 15));
add(label, BorderLayout.NORTH);
Button button = new Button("Cliquez moi !");
button.addActionListener(new MyButtonListener(this));
add(button, BorderLayout.CENTER);
setVisible(true);
}
void incrementCounter() {
label.setText(String.format("Vous avez cliqué %d fois", ++counter));
}
public static void main(String[] args) {
new SimpleEventFrame();
}
}
class MyButtonListener implements ActionListener {
private SimpleEventFrame parent;
MyButtonListener(SimpleEventFrame parent) {
this.parent = parent;
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
this.parent.incrementCounter();
}
}
public class CloseableFrame extends Frame {
public CloseableFrame(String title) {
super(title);
addWindowListener(new QuittingWindowListener());
}
}
class QuittingWindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
}
Canvas et dessin
Penser à utiliser la CloseableFrame de l’exemple précédent.
import java.awt.*;
import java.awt.event.*;
class SimplePainter extends CloseableFrame {
private final SimpleCanvas canvas;
SimplePainter() {
super("Let's Draw !");
this.setSize(600, 600);
canvas = new SimpleCanvas();
canvas.setBackground(Color.WHITE);
CanvasMouseMotionListener motionListener = new CanvasMouseMotionListener(canvas);
canvas.addMouseMotionListener(motionListener);
CanvasMouseListener mouseListener = new CanvasMouseListener(canvas);
canvas.addMouseListener(mouseListener);
this.add(canvas);
this.setVisible(true);
}
public static void main(String[] args) {
new SimplePainter();
}
}
class SimpleCanvas extends Canvas {
private Color paintColor = Color.BLUE;
public void addPoint(int x, int y) {
Graphics g = this.getGraphics();
g.setColor(paintColor);
g.fillRect(x, y, 3, 3);
}
public void toggleColor() {
paintColor = paintColor == Color.BLUE ? Color.RED : Color.BLUE;
}
}
class CanvasMouseMotionListener extends MouseMotionAdapter {
private final SimpleCanvas canvas;
CanvasMouseMotionListener(SimpleCanvas canvas) {
this.canvas = canvas;
}
@Override
public void mouseMoved(MouseEvent mouseEvent) {
canvas.addPoint(mouseEvent.getX(), mouseEvent.getY());
}
}
class CanvasMouseListener extends MouseAdapter {
private final SimpleCanvas canvas;
CanvasMouseListener(SimpleCanvas canvas) {
this.canvas = canvas;
}
@Override
public void mouseClicked(MouseEvent mouseEvent) {
canvas.toggleColor();
}
}