Program do katalogowania zdjęć

0

Witam, jestem początkującym programistą. Mam do napisania program, w którym gdy wrzucimy jakieś zdjęcie będzie można wybrać odpowiednią kategorię. Można by powiedzieć, że prawie już skończyłem, ale nie mogę wyświetlić zdjęcia w danej kategorii. W programie po wciśnięciu przycisku "Wybierz..." można wybrać jedno zdjęcie, a po wciśnięciu np."Miasto" otwiera się nowe okienko i tam powinny być wyświetlone zdjęcia. Myślę, że jest to związane z Labelem, w którym ma być wyświetlone zdjęcie. Poniżej załączam kod programu. Z góry dziękuję za pomoc, Pozdrawiam.

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Arrays;
import javax.swing.*;


public class Main extends JFrame {
    private static JLabel Obraz;

    public static void  main(String[] args) {

    JFrame Katalog = new JFrame("Katalogowanie");
    Katalog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    final JDesktopPane desktop = new JDesktopPane();
    JPanel top = new JPanel();

        final JButton Wybierz = new JButton("Wybierz zdjęcie");
        Wybierz.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Otwórz();
            }

            public void Otwórz() {
                {
                    JFileChooser chooser = new JFileChooser();
                    chooser.setCurrentDirectory(new File("."));
                    chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){
                        public boolean accept(File f){
                            String name = f.getName().toLowerCase();
                            return name.endsWith(".gif")
                                    || name.endsWith(".jpg")
                                    || name.endsWith(".jpeg")
                                    || f.isDirectory();
                        }
                        public String getDescription(){
                            return "Image files";
                        }
                    });

                    int r = chooser.showOpenDialog(chooser);
                    if(r == JFileChooser.APPROVE_OPTION) {
                        String name = chooser.getSelectedFile().getAbsolutePath().replace('\\', '/');
                        System.out.println(name);

                        String [] wybor = {"Miasto","Ludzie","Samochody","Lasy"};

                        String ans = (String) JOptionPane.showInputDialog(Katalog,"Wybierz kategorię","Kategoria",
                                JOptionPane.QUESTION_MESSAGE,null,wybor,wybor[0]);

                        System.out.println(Arrays.toString(wybor));

                        if(ans == "Miasto"){
                            ImageIcon image = new ImageIcon(name);
                            Obraz.setIcon(image);
                            Graphics g = Obraz.getGraphics();
                            g.drawImage(image.getImage(), 0, 0, null);
                        }

                        if (ans == "Ludzie"){
                            ImageIcon image = new ImageIcon(name);
                            Obraz.setIcon(image);
                            Graphics g = Obraz.getGraphics();
                            g.drawImage(image.getImage(), 0, 0, null);
                        }

                        if (ans == "Samochody"){
                            ImageIcon image = new ImageIcon(name);
                            Obraz.setIcon(image);
                            Graphics g = Obraz.getGraphics();
                            g.drawImage(image.getImage(), 0, 0, null);
                        }

                        if (ans == "Lasy"){
                            ImageIcon image = new ImageIcon(name);
                            Obraz.setIcon(image);
                            Graphics g = Obraz.getGraphics();
                            g.drawImage(image.getImage(), 0, 0, null);
                        }
                    }
                }
            }

        });

        final JButton Miasto = new JButton("Miasta");
        Miasto.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e) {
            final JInternalFrame newWindow = new JInternalFrame(("Miasta"), true, true, true, true);
            //1st boolean - Resizable //2nd boolean - Closable //3rd boolean - Maximizable //4th boolean - Iconifiable
            JLabel Obraz = new JLabel("Ten obraz");

                JPanel t = new JPanel();
                t.add(Obraz);
                newWindow.add(t,BorderLayout.NORTH);

                newWindow.setVisible(true);
                newWindow.setSize(300, 240);
                newWindow.setMinimumSize(new Dimension(300, 240));
                desktop.add(newWindow);
                newWindow.moveToFront();
        }
    });

             top.add(Miasto);
             top.add(Ludzie);
             top.add(Samochody);
             top.add(Lasy);
             top.add(Wybierz);

             Katalog.add(BorderLayout.NORTH, top);
             Katalog.add(BorderLayout.CENTER, desktop);
             Katalog.setSize(500, 500);
             Katalog.setVisible(true);
             Katalog.setLocationRelativeTo(null);
            }
}  
0

if(ans == "Miasto"){ te wszystkie porownania są źle, stringi porównuje sie przez .equals()

0

Poprawiłem, tak powinno być?

 if (ans.equals("Ludzie")){ 

Takie błędy mam:

 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at okn.mar.Main$1.Otwórz(Main.java:61)
	at okn.mar.Main$1.actionPerformed(Main.java:26)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6535)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6300)
	at java.awt.Container.processEvent(Container.java:2236)
	at java.awt.Component.dispatchEventImpl(Component.java:4891)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
	at java.awt.Container.dispatchEventImpl(Container.java:2280)
	at java.awt.Window.dispatchEventImpl(Window.java:2750)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

1 użytkowników online, w tym zalogowanych: 0, gości: 1