Я пытаюсь сделать просмотрщик изображений в Java.Что делает моя программа, так это то, что она принимает два ввода от пользователя: на входе 1 пользователь вводит путь к папке, в которой он хочет просматривать изображения, а на входе 2 также пользователь вводит путь для другой папки, в которой он хочетдля просмотра изображений, а затем нажмите кнопку запуска.При нажатии кнопки запуска первое изображение из обеих введенных пользователем папок отображается в средстве просмотра изображений параллельно друг другу, и затем пользователь может просматривать следующее и предыдущее изображения при нажатии различных кнопок.Мой код для вышеуказанной программы показан ниже: -
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class Main extends JFrame {
private JPanel contentPane;
public JTextField textField;
public JTextField textField_1;
public JLabel label;
public JLabel label_1;
int pos = 0;
int pos1 = 0;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main frame = new Main();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Main() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 693, 421);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblInput = new JLabel("Input 1");
lblInput.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblInput.setBounds(43, 26, 71, 29);
contentPane.add(lblInput);
textField = new JTextField();
textField.setBounds(124, 26, 312, 29);
contentPane.add(textField);
textField.setColumns(10);
JLabel lblExePath = new JLabel("Input 2");
lblExePath.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblExePath.setBounds(43, 90, 71, 29);
contentPane.add(lblExePath);
textField_1 = new JTextField();
textField_1.setColumns(10);
textField_1.setBounds(124, 90, 312, 29);
contentPane.add(textField_1);
JButton btnRun = new JButton("Run");
btnRun.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
showImage(0);
showImages(0);
}
});
btnRun.setBounds(505, 95, 89, 23);
contentPane.add(btnRun);
label = new JLabel("");
label.setBounds(43, 151, 262, 176);
contentPane.add(label);
label_1 = new JLabel("");
label_1.setBounds(332, 151, 262, 176);
contentPane.add(label_1);
JButton btnPrevious = new JButton("Previous");
btnPrevious.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
pos = pos-1;
if (pos < 0) {
pos = 0;
}
showImage(pos);
pos1 = pos1-1;
if (pos1 < 0) {
pos1 = 0;
}
showImages(pos1);
}
});
btnPrevious.setBounds(124, 349, 89, 23);
contentPane.add(btnPrevious);
JButton btnNext = new JButton("Next");
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pos = pos+1;
if (pos >= getImage().length) {
pos = getImage().length - 1;
}
showImage(pos);
pos1 = pos1+1;
if (pos1 >= getImages().length) {
pos1 = getImages().length - 1;
}
showImage(pos1);
}
});
btnNext.setBounds(331, 349, 89, 23);
contentPane.add(btnNext);
}
public String[] getImage() {
File file = new File(textField.getText());
String[] imagesList = file.list();
return imagesList;
}
public void showImage(int index) {
String[] imagesList = getImage();
String imageName = imagesList[index];
ImageIcon icon = new ImageIcon(imageName);
Image image = icon.getImage().getScaledInstance(label.getWidth(),
label.getHeight(), Image.SCALE_SMOOTH);
label.setIcon(new ImageIcon(image));
}
public String[] getImages() {
File file = new File(textField_1.getText());
String[] imagesList = file.list();
return imagesList;
}
public void showImages(int index) {
String[] imagesList = getImages();
String imageName = imagesList[index];
ImageIcon icon = new ImageIcon(imageName);
Image image = icon.getImage().getScaledInstance(label_1.getWidth(),
label_1.getHeight(), Image.SCALE_SMOOTH);
label_1.setIcon(new ImageIcon(image));
}
}
Теперь проблема, с которой я сталкиваюсь, заключается в том, что все работает нормально, я могу преобразовать файлы введенной папки пользователя всписок массивов в методе getimage () и возможность конвертировать их в другой массив, но я не могу правильно просмотреть этот массив в методе showimage () и не могу отобразить изображение на экране.И если есть какие-то другие проблемы в этом коде, пожалуйста, руководствуйтесь, потому что я новичок в программировании.