Ok so this code works great with an if else statement but i dont why when i change the showMenu to a switch statement you cannot see my print out statement as a menu!?
Iv tried different ways of writing the print outs and they havent worked at all.

Also my public void forward statement keeps going up to 9 then wraps back to one when it should only stop at 8 then wrap back to one. is my logic wrong? the public int forward works fine and goes only up to 8 and wraps back to 1


import java.util.Random;
import java.util.Scanner;

import javax.swing.JFrame;
import java.awt.*;
import java.net.*;
import javax.swing.JPanel;
public class PictureViewer {

int min = 1;
int max = 8;
int current_image= 1;
Image theimage;

public  int  forward ( int num ) { //this will be passed current_image to work with

   if (num>=8){
       num = 1;
              }//these methods are the same  logic, just no GB
   else {
   return num;

public  int  backward ( int num ) { //this will be passed current_image to work with
    if (num>1){
        num = 1;
    return num;

public  void  forward ( ) {
    if (current_image>max){
        current_image = 1;//wrap back aroudn to 1, when method is called again, 1 will increment
 else { current_image++;

public void  backward ( ) {

       if (current_image>min){
        else {
        current_image = min; //this is where the decrement will stop because current image is not > 1. current image = 1

public  String  createFileName ( int current_img ) {
    String current_imgString = new Integer(current_img).toString();
    current_imgString = "picture" + current_img + ".gif";

return current_imgString;

public  String  createRandomName () {
Random generator = new Random();
int num= generator.nextInt(max) + 1;
 String current_imgString = new Integer(num).toString();
 current_imgString = "picture" + num + ".gif";

 return current_imgString;

public void showMenu(){

    Scanner input = new Scanner(System.in);

        int x ;
            x = input.nextInt();

            switch (x) {
            case 1:System.out.println("Forward");
                current_image = forward(current_image);
            case 2:System.out.println("Backward");
                current_image = backward(current_image);
            case 3:System.out.println("Forward Global");
            case 4:System.out.println("Backward Global");
            case 5:System.out.println("Create File Name");
            case 6:System.out.println("Create Random");
            case 7:System.out.println("Get Any Image");
            case 8:System.out.println("Exit");


}while (x >=1 && x <=8);


public void showWindow( String filename ) {
JPanel panel = new MyPanel();

JFrame frame1 = new JFrame();
theimage = load_picture(filename, frame1);
frame1.setSize(500, 500);
frame1.setLocation(200, 150);


public class MyPanel extends JPanel {
 public void paintComponent (Graphics g) {
    int xpos,ypos;
    // set the xpos and ypos before you display the image
    xpos = 10; // you pick the position
    ypos = 10; // you pick the position
    if (theimage != null) {
        // note: theimage global variable must be set BEFORE paint is called

public Image load_picture(String imagefile, JFrame theframe)

Image tempimage;

MediaTracker tracker;
tracker = new MediaTracker(theframe);

String startURL;
if (imagefile.startsWith("http"))
   startURL = "";
   startURL = "http://www.canyons.edu/departments/comp_sci/ferguson/cs111/images/";

URL myURL=null;
myURL = new URL(startURL + imagefile);
catch(MalformedURLException e) {
  System.out.println("Error caught " + e.toString());

//tempimage = getImage(myURL);   // JApplet version
tempimage = Toolkit.getDefaultToolkit().getImage(myURL); // stand alone program version

// Add the image to the MediaTracker so that we can wait for it

tracker.addImage(tempimage, 0);
try { tracker.waitForID(0); }
catch ( InterruptedException err) { System.err.println(err); }

return tempimage;

public String getAnyImage() {

String picture ;

Scanner input = new Scanner (System.in);

System.out.println("Enter the URL");

return picture;


    public static void main(String[] args) {

               PictureViewer  object = new  PictureViewer ();



Recommended Answers

All 2 Replies

I'm not sure I get what you're asking but if you want a menu to print out, something like this:
1. Forward
2. Backward
3. Forward Global
... etc.
Then you need to put your print statements before the switch statement. You say this worked with an if/else statement, but I'm not sure what you mean by "it worked".

One of your forward methods checks for num >= 8, and the other checks for current_image > max. I think you need to change the 2nd one to >=.

Thank you! it worked
I was placing my print statements in the wrong place

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.