0

I want to make a paint program and i don't know why , i cannot display the image using JFileChooser to Open the image

Here's the code that i'm stuck on

if(e.getActionCommand().equals("   Open               "))
    {

        JFileChooser file = new JFileChooser();

        file.setAccessory(new ImagePreview(file)); //Memanggil Image Preview
        file.setCurrentDirectory(new File(System.getProperty("user.home")));
        //filter the files
        FileNameExtensionFilter filter = new FileNameExtensionFilter("*.Images", "jpg","gif","png");
        file.addChoosableFileFilter(filter);
        int result = file.showOpenDialog(null);
         //if the user click on Open in Jfilechooser
        if(result == JFileChooser.APPROVE_OPTION){
            File selectedFile = file.getSelectedFile();
            String path = selectedFile.getAbsolutePath();
            label.setIcon(ResizeImage(path));
            canvas.add(label);
        }
         //if the user click on save in Jfilechooser
        else if(result == JFileChooser.CANCEL_OPTION){
            System.out.println("No File Select");
        }
      }

And here's all of the code

package uas.designtool;


public class DrawPanel extends JPanel implements ActionListener,MouseMotionListener {

private JMenuBar menuBar;
private JMenu menu;
private JMenuItem newItem, openItem, saveItem, exitItem;
private JFrame frame, frame2; 
private ButtonGroup buttons=new ButtonGroup();
private JButton penButton,colorButton,button3,button4,button5,button6,button7,button8;
private NewPanel panel2;
private Color color = (Color.white);
private Graphics2D g2;
private int currentX, currentY, oldX, oldY;

private boolean isCanvasCreated = false;

private JPanel canvas=new JPanel();

private JLabel label;
private String location;



public DrawPanel() {
    setPreferredSize(new Dimension(1400, 740));
    setMaximumSize(new Dimension(1400, 740));
    this.Menubar();
    this.ItemBar();
    this.JFrame();
}

public void JFrame(){
    frame=new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(this);
    frame.setTitle("Design Tools");
    frame.pack();
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
}

public void Menubar() {
    //MenuBar
    menuBar = new JMenuBar();

    //"FILE" menu Section
    menu = new JMenu("File");
    menu.setMnemonic(KeyEvent.VK_F);
    menuBar.add(menu);

    //Sub Menu for "FILE" Section
    //New
    newItem = new JMenuItem("   New               ", new ImageIcon("image/new.png"));
    newItem.addActionListener(this);
    newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    menu.add(newItem);
    //Open
    openItem = new JMenuItem("   Open               ", new ImageIcon("image/open.png"));
    openItem.addActionListener(this);
    openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    menu.add(openItem);
    //Save
    saveItem = new JMenuItem("   Save               ", new ImageIcon("image/save.png"));
    saveItem.addActionListener(this);
    saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
    menu.add(saveItem);
    //Exit
    exitItem = new JMenuItem("   Exit               ", new ImageIcon("image/exit.png"));
    exitItem.addActionListener(this);
    exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK));
    menu.add(exitItem);

    //"EDIT" menu Section
    menu = new JMenu("Edit");
    menu.setMnemonic(KeyEvent.VK_E);
    menuBar.add(menu);





    //Place MenuBar to JPanel

    this.setLayout(new BorderLayout());
    this.add(menuBar, BorderLayout.NORTH);

}

//Left Toolbar
public void ItemBar()
{
   JPanel ButtonPanel=new JPanel();
   ButtonPanel.setPreferredSize(new Dimension(110,720));


   penButton=new JButton();
   colorButton=new JButton();
   button3=new JButton();
   button4=new JButton();
   button5=new JButton();
   button6=new JButton();
   button7=new JButton();
   button8=new JButton();


   penButton.setPreferredSize(new Dimension(50,50));
   colorButton.setPreferredSize(new Dimension(50,50));
   button3.setPreferredSize(new Dimension(50,50));
   button4.setPreferredSize(new Dimension(50,50));
   button5.setPreferredSize(new Dimension(50,50));
   button6.setPreferredSize(new Dimension(50,50));
   button7.setPreferredSize(new Dimension(50,50));
   button8.setPreferredSize(new Dimension(50,50));

   buttons.add(penButton);
   penButton.setSelected(true);
   penButton.addActionListener(this);
   buttons.add(colorButton);
   colorButton.addActionListener(this);
   buttons.add(button3);
   buttons.add(button4);
   buttons.add(button5);
   buttons.add(button6);
   buttons.add(button7);
   buttons.add(button8);

   ButtonPanel.add(penButton);
   ButtonPanel.add(colorButton);
   ButtonPanel.add(button3);
   ButtonPanel.add(button4);
   ButtonPanel.add(button5);
   ButtonPanel.add(button6);
   ButtonPanel.add(button7);
   ButtonPanel.add(button8);

   this.add(ButtonPanel, BorderLayout.WEST);



}

public ImageIcon ResizeImage(String ImagePath)
{
    ImageIcon MyImage = new ImageIcon(ImagePath);
    Image img = MyImage.getImage();
    Image newImg = img.getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_SMOOTH);
    ImageIcon image = new ImageIcon(img);
    return image;
}

@Override
public void actionPerformed(ActionEvent e) {

    if(e.getSource().equals(colorButton))
    {
        if(isCanvasCreated == true)
        {
            color = JColorChooser.showDialog(null, "Pick your Color", color);
        if(color == null)
        {
            color = (Color.white);
        }
        canvas.setBackground(color);

        }


    }

    if(e.getActionCommand().equals("   New               "))
    {
        BorderLayout layout = (BorderLayout)this.getLayout();
        if(layout.getLayoutComponent(BorderLayout.CENTER)!=null)
            this.remove(layout.getLayoutComponent(BorderLayout.CENTER));

        panel2= new NewPanel(this);  

        frame2=new JFrame();
        frame2.setContentPane(panel2);
        frame2.setTitle("New");
        frame2.pack();
        frame2.setVisible(true);
        frame2.setLocationRelativeTo(null);
    }

    if(e.getSource().equals(panel2.getCreateButton()))
    {
        frame2.dispose();
        int[] value=panel2.dimensionValue();
        JPanel mainPanel=new JPanel();



        int calculate= (1280-value[0]+10);
        int calculate1= (720-value[1]+10);
        String column= "10px,"+String.valueOf(value[0])+"px,"+String.valueOf(calculate)+"px";
        String row="10px,"+String.valueOf(value[1])+"px,"+String.valueOf(calculate1)+"px";

        FormLayout layout = new FormLayout(column, row);
        mainPanel.setLayout(layout);

        CellConstraints cc=new CellConstraints();

        canvas.setPreferredSize(new Dimension(value[0],value[1]));
        canvas.setBackground(color);
        isCanvasCreated = true;
        mainPanel.add(canvas, cc.xy(2, 2));


        JPanel layouting=new JPanel();
        layouting.setPreferredSize(new Dimension(1400,10));
        this.add(layouting, BorderLayout.SOUTH);
        this.add(mainPanel, BorderLayout.CENTER);

        frame.setContentPane(this);
    }

    if(e.getActionCommand().equals("   Open               "))
    {

        JFileChooser file = new JFileChooser();

        file.setAccessory(new ImagePreview(file)); //Memanggil Image Preview
        file.setCurrentDirectory(new File(System.getProperty("user.home")));
        //filter the files
        FileNameExtensionFilter filter = new FileNameExtensionFilter("*.Images", "jpg","gif","png");
        file.addChoosableFileFilter(filter);
        int result = file.showOpenDialog(null);
         //if the user click on Open in Jfilechooser
        if(result == JFileChooser.APPROVE_OPTION){
            File selectedFile = file.getSelectedFile();
            String path = selectedFile.getAbsolutePath();
            label.setIcon(ResizeImage(path));
            canvas.add(label);
        }
         //if the user click on save in Jfilechooser
        else if(result == JFileChooser.CANCEL_OPTION){
            System.out.println("No File Select");
        }
      }




@Override
public void mouseDragged(MouseEvent e) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void mouseMoved(MouseEvent e) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}


}

The error output is

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at uas.designtool.DrawPanel.ResizeImage(DrawPanel.java:216)

Hendra Setiawan
  • 51
  • 1
  • 11

0 Answers0