I'm trying to flip through multiple images using previous and next button. Currently, the layout is:
and this is my code:
public void createWalkthrough() {
if(currentframe != null) {
currentframe.setVisible(true);
return;
}
currentframe = new JFrame("Getting Started");
JPanel imagePanel = new JPanel();
imagePanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
imageArea = new JLabel();
imagePanel.add(imageArea);
JButton previousButton = new JButton("Previous");
previousButton.addActionListener(this);
previousButton.setActionCommand("Previous");
JButton nextButton = new JButton("Next");
nextButton.addActionListener(this);
nextButton.setActionCommand("Next");
JPanel panelButtons = new JPanel();
panelButtons.setLayout(new BoxLayout(panelButtons, BoxLayout.LINE_AXIS));
panelButtons.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
panelButtons.add(Box.createRigidArea(new Dimension(10, 0)));
panelButtons.add(Box.createHorizontalGlue());
panelButtons.add(previousButton);
panelButtons.add(nextButton);
currentframe.setSize(439, 548);
currentframe.setResizable(false);
Container pane = currentframe.getContentPane();
pane.add(imagePanel, BorderLayout.CENTER);
currentframe.add(panelButtons, BorderLayout.PAGE_END);
currentframe.setVisible(true);
currentframe.requestFocusInWindow();
}
public void displayImage(int index) {
File[] imagesList = getImages();
File imageName = imagesList[index];
ImageIcon icon = new ImageIcon(imageName.getAbsolutePath());
Image image = icon.getImage().getScaledInstance(imageArea.getWidth(), imageArea.getHeight(), Image.SCALE_SMOOTH);
imageArea.setIcon(new ImageIcon(image));
}
public File[] getImages() {
File folder = new File("/Users/jwh/Desktop/img");
File[] listofImages = folder.listFiles();
return listofImages;
}
@Override
public void actionPerformed(ActionEvent e) {
if(base == null) {
return;
}
String selected = e.getActionCommand();
if(selected.equals("Previous")) {
pos = pos - 1;
if(pos < 0) {
pos = 0;
}
displayImage(pos);
} else if(selected.equals("Next")) {
pos = pos + 1;
if(pos >= getImages().length) {
pos = getImages().length;
}
displayImage(pos);
}
}
I'm not sure what I am doing wrong. I feel like I keep going around in circles by trying different things on different StackOverflow posts.
The error that I am currently getting is:
"Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:
Width (0) and height (0) must be non-zero"
Any help would be greatly appreciated. Thank you!!