TP04 from DEV3.1

This commit is contained in:
2025-12-05 10:39:15 +01:00
parent ef6ca77dc6
commit cd5f593c57
10 changed files with 138 additions and 0 deletions

BIN
DEV/DEV3.1/TP04/.DS_Store vendored Normal file

Binary file not shown.

BIN
DEV/DEV3.1/TP04/Exercise1/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,17 @@
run: compile
java -jar Project.jar
compile: build/Main.class
jar cvfe Project.jar fr/nathanbaudrier/Main -C build fr resources
build/Main.class: src/Main.java build/ImageWindow.class
javac -d build -cp build -sourcepath src $< -implicit:none
build/ClickSwapImageEvent.class build/ImageWindow.class: src/ClickSwapImageEvent.java src/ImageWindow.java build/ImageManager.class
javac -d build -cp build -sourcepath src src/ClickSwapImageEvent.java src/ImageWindow.java -implicit:none
build/ImageManager.class: src/ImageManager.java
javac -d build -cp build -sourcepath src $< -implicit:none

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -0,0 +1,25 @@
package fr.nathanbaudrier;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class ClickSwapImageEvent extends MouseAdapter {
private ImageWindow window;
public ClickSwapImageEvent(ImageWindow window) {
this.window = window;
}
public void mouseClicked(MouseEvent event) {
System.out.println(this.window.manager.cursor);
if(event.getX() > this.window.getWidth() / 2) {
this.window.nextImage();
System.out.println(this.window.manager.cursor);
return;
}
this.window.previousImage();
System.out.println(this.window.manager.cursor);
}
}

View File

@@ -0,0 +1,39 @@
package fr.nathanbaudrier;
import javax.swing.ImageIcon;
public class ImageManager {
private ImageIcon[] images;
public int cursor;
public ImageManager() {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
this.images = new ImageIcon[3];
this.images[0] = new ImageIcon(loader.getResource("resources/dice.jpg"));
this.images[1] = new ImageIcon(loader.getResource("resources/frog.png"));
this.images[2] = new ImageIcon(loader.getResource("resources/random.jpg"));
}
public ImageIcon getNextImage() {
if(this.cursor >= this.images.length - 1) {
this.cursor = 0;
} else {
this.cursor++;
}
return this.images[this.cursor];
}
public ImageIcon getPreviousImage() {
if(this.cursor <= 0) {
this.cursor = this.images.length - 1;
} else {
this.cursor--;
}
return this.images[this.cursor];
}
}

View File

@@ -0,0 +1,48 @@
package fr.nathanbaudrier;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ImageWindow extends JFrame {
public ImageManager manager;
private JLabel label;
public ImageWindow() {
this.manager = new ImageManager();
this.setSize(1024, 1024);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseListener(new ClickSwapImageEvent(this));
this.nextImage();
}
public void nextImage() {
if(this.label != null) {
this.remove(this.label);
}
this.label = new JLabel(this.manager.getNextImage());
this.label.setVerticalAlignment(JLabel.CENTER);
this.label.setHorizontalAlignment(JLabel.CENTER);
this.add(label);
this.revalidate();
}
public void previousImage() {
if(this.label != null) {
this.remove(this.label);
}
this.label = new JLabel(this.manager.getPreviousImage());
this.label.setVerticalAlignment(JLabel.CENTER);
this.label.setHorizontalAlignment(JLabel.CENTER);
this.add(label);
this.revalidate();
}
}

View File

@@ -0,0 +1,9 @@
package fr.nathanbaudrier;
public class Main {
public static void main(String[] args) {
ImageWindow window = new ImageWindow();
window.setVisible(true);
}
}