Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

8. Consider the following Java code: public JFrame createFrame() { JPanel panel

ID: 3758408 • Letter: 8

Question

8. Consider the following Java code:

public JFrame createFrame() {

JPanel panel = new JPanel(new GridLayout(2, 2));

for (int i = 0; i < 2; ++i)

for (int j = 0; j < 2; ++j)

panel.add(new JLabel(i + “ “ + j));

JFrame frame = new JFrame(“Hello World 1!”);

frame.setLayout(new BorderLayout());

frame.add(new JButton(“Click me!”), BorderLayout.NORTH);

frame.add(panel, BorderLayout.CENTER);

frame.add(new JLabel(“Some text”), BorderLayout.SOUTH);

return frame;

}

Draw (and explain) the Swing window resulting from showing the returned JFrame:

Explanation / Answer

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

import java.awt.image.*;

import javax.swing.filechooser.*;

import java.util.HashMap;

import java.io.*;

class ImageShow extends Canvas implements ImageObserver{

            Image img;

            Dimension ds;

            HashMap<Integer, String> imgFiles;

            String filename;

            int curImgIndex;

            ImageShow(){

1                      ds=getToolkit().getScreenSize();

2                      filename=null;

                       

                                    }

           

3          public void paint(Graphics g){

                        if(filename!=null){

                                    img=getToolkit().getImage(filename);                  

                                    drawIt(g,img);           

                        }

            }

4          public void drawIt(Graphics g, Image img){

                        Graphics2D g2d=(Graphics2D)g;

                        int x=-img.getWidth(this)/2;

                        int y=-img.getHeight(this)/2;

                        int w=img.getWidth(this);

                        int h=img.getHeight(this);

                        int mX=(int)ds.getWidth()/2;

                        int mY=(int)ds.getHeight()/2;                     

                        g2d.translate(mX,mY);

                        g2d.drawImage(img,x,y,w,h,this);

                       

            }

           

           

5          public void storeImages(){

                        imgFiles=new HashMap<Integer, String>();                  

                        JFileChooser chooser = new JFileChooser();

                        FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "gif","png","gif","bmp");

                        chooser.setFileFilter(filter);

                        chooser.setMultiSelectionEnabled(true);

                        int returnVal = chooser.showOpenDialog(this);

                        if(returnVal == JFileChooser.APPROVE_OPTION) {

                                    File[] Files=chooser.getSelectedFiles();

                                                for( int i=0;i<Files.length;i++){     

                                                            imgFiles.put(i,Files[i].toString());

                                                            }

                                 }

                        }

6          public void moveFirst(){

                        if(!imgFiles.isEmpty()){

                                    curImgIndex=0;                               

                                    filename=imgFiles.get(curImgIndex);

                                    repaint();

                                    }

                        }

           

7          public void moveNext(){

                        if(!imgFiles.isEmpty() && curImgIndex<imgFiles.size()-1){

                                    curImgIndex++;                               

                                    filename=imgFiles.get(curImgIndex);

                                    repaint();

                                    }

                        }

8          public HashMap<Integer,String> getImgFiles(){

                        return imgFiles;

            }

           

}

           

9 class ShowInterface extends JFrame implements ActionListener{

           

            JButton btSlideShow;

            JPanel panel;

            ImageShow show;

            boolean stop=true;

            ImageSlider slider;

            ShowInterface(){

                        setTitle("Image Slide Show");

                        setDefaultCloseOperation(EXIT_ON_CLOSE);

                        setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);

                        JMenuBar mainmenu=new JMenuBar();

                        JMenu menu=new JMenu("File");

                        JMenuItem mopen=new JMenuItem("Open...");

                        mopen.setMnemonic(KeyEvent.VK_O);

                        mopen.addActionListener(this);

                        JMenuItem mexit=new JMenuItem("Exit");

                        mexit.setMnemonic(KeyEvent.VK_X);

                        mexit.addActionListener(this);

                        menu.add(mopen);

                        menu.add(mexit);

                        mainmenu.add(menu);      

                        setJMenuBar(mainmenu);

                       

                        btSlideShow=new JButton(new ImageIcon("play.png"));

                        btSlideShow.setBackground(Color.BLACK);

                        btSlideShow.addActionListener(this);

                        btSlideShow.setEnabled(false);

                        panel=new JPanel();

                        panel.setLayout(new FlowLayout());

                        panel.add(btSlideShow);

                        panel.setBackground(Color.BLACK);

                        add(panel, BorderLayout.SOUTH);

                       

                        show=new ImageShow();

                        add(show,BorderLayout.CENTER );

                        setVisible(true);

                                   

                        }

           

           

10        public void actionPerformed(ActionEvent e){

                                    if(e.getSource()==btSlideShow)

                                                {

                                                if(stop){

           

                                                            startClick();

                                                            }

                                                else{

                                                            stopClick();

                                                            }

                                                           

                                               

                                                }

                                    else {

                                                JMenuItem source = (JMenuItem)(e.getSource());

                                                if(source.getText().compareTo("Open...")==0)

                                                            {

                                                                        show.storeImages();

                                                                        if(show.getImgFiles().size()>0){

                                                                                    show.moveFirst();                                                   

                                                                                    btSlideShow.setEnabled(true);

                                                                                    }

                                                            }

                                                else if(source.getText().compareTo("Exit")==0)

                                                            System.exit(0);

                                                           

                                                }

                                   

                        }

           

11        public void startClick(){

                        btSlideShow.setIcon(new ImageIcon("pause.png"));

                        stop=false;

                        slider=new ImageSlider();

                        slider.start();

            }          

12        public void stopClick(){

                        btSlideShow.setIcon(new ImageIcon("play.png"));

                        stop=true;                 

                        slider.stopShow();

            }

13        class ImageSlider extends Thread{

                        boolean started;

                        HashMap<Integer,String> map;

                        ImageSlider(){

                                    started=true;

                                    map=show.getImgFiles();

                        }

                        public void run(){

                                    int i;

                                    try{

                                                for(i=0;i<map.size();i++)

                                                {

                                                if(started!=false){

                                                            Thread.sleep(2000);                                                           

                                                            show.moveNext();

                                                                                               

                                                            }          

                                                }

                                    stopClick();

                                    show.moveFirst();

                                    }catch(InterruptedException ie){System.out.println("Interrupted slide show...");}

            }

            public void stopShow(){

                        started=false;

                        }

           

            }

           

}

15 public class ImageSlideShow{

            public static void main(String args[]){

                        new ShowInterface();

  

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote