Witam!!! Po kilku dniach szukania informacji udalo mi sie wreszcie cos napisac. Sa to poczatki swingu i w ogóle programowania, wiec prosze o wyrozumialosc. Chcialbym sie zwrocic do was o pomoc w ulepszeniu mojego kodu.
Zadanie wyglada nastepujaco:
Napisać program pozwalającu na przeglądanie dowolnych obrazków w formacie gif, jpg lub png z podanego katalogu.
Obrazki są kolejno pokazywane w tym samym oknie, przy czym:
a) czas wyświetlania jednego obrazka (w sekundach) jest podany na starcie programu,
b) obrazki pokazywane są w ich oryginalnych wielkościach,
c) zmiany rozmiarów obszaru wykreślania reskalują obrazek,
d) po zakończeniu wyświetlania wszystkich obrazków w oknie ukazuje się napis "Koniec prezentacji".
e) rozmiar pisma dla napisu ustalana jest na starcie programu,
f) napis ma być wyśrodkowany w obszarze wyświetlania w poziomie i w pionie.
Dane (katalog, czas wyświetlania jednego obrazka, rozmiar pisma) podajemy jako argumenty programu.
Jeśli obrazka nie udąło się załadować (brak lub błąd) w oknie wyświetlany jest napis "Brak obrazka".
import java.io.File;
import java.util.ArrayList;
import javax.swing.*;
public class Main {
public static void main(String[] args){
File[] files = new File("C:/Eclipse/Grafika").listFiles();
ArrayList<String> path = new ArrayList<>();
for(int i=0; i<files.length; i++){
if(accept(files[i].getAbsolutePath()))
path.add(files[i].getAbsolutePath());
}
new Panel(path,1,20);
}
public static boolean accept(String fname) {
if(fname.lastIndexOf('.')>0){
int lastIndex = fname.lastIndexOf('.');
String str = fname.substring(lastIndex);
if(str.equals(".gif") || str.equals(".jpg") || str.equals(".png") )
return true;
}
return false;
}
}
import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;
public class Panel extends JFrame{
ImageIcon icon;
JLabel label;
public Panel(ArrayList<String> path, int wait, int size){
wait*=1000;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(new FlowLayout());
setResizable(false);
craftImage(path, wait);
end(size);
}
public void craftImage(ArrayList<String> path, int wait){
for(int i=0; i<path.size(); i++){
icon = new ImageIcon(path.get(i));
label = new JLabel(icon);
add(label);
pack();
setLocationRelativeTo(null);
try {
Thread.sleep(wait);
}catch (InterruptedException e){}
remove(label);
revalidate();
repaint();
}
}
public void end(int size){
label = new JLabel("Zakończenie Prezentacji ",JLabel.CENTER);
Rectangle r = getBounds();
int h = r.height;
int w = r.width;
label.setBounds(w/2 - 200, h/2-150,300,200);
label.setFont(new Font(null, Font.BOLD, size));
add(label);
}
}
czy to co napisalem ma jakikolwiek sens?