-1

I have a java project, and after compiling it I get 2 warnings:

java: filepath\filename.java uses unchecked or unsafe operations.
java: Recompile with -Xlint:unchecked for details.

And here is the code of the class:

public class GuiMain extends javax.swing.JFrame {

/**
 * Don't use parameters because of windows 7.
 */
public static final boolean USE_PARAMETERS = false;

/**
 * The refresh rate of the traffic screen capturing.
 */
private static int TRAFFIC_REFRESH_RATE = 0; 

private static final long serialVersionUID = -2417685564943832874L;

private static final String CLIENT_NAME = "Traffic Analysis";

private static final String OUTPUT_FILE = "last_session_results.txt";

private JPanel pMainMenu = null;
private JPanel pInput = null;

private JButton btCreate = null;
private JTextField tfInput = null;
private JTextField tfCoordinates = null;

private JPanel pObserve = null;
private JScrollPane spObserve = null;
private JTable tblObserve = null;
private TrafficObserveModel modelObserve = null;
private JButton btAddObserver = null;
private JButton btDelObserver = null;
private JButton btObserving = null;

private JPanel pPaint = null;
private ImagePanel imagePanel = null;
private JButton btTrafficObserver = null;
private JComboBox cobSections = null;
private JButton btNewSection = null;
private JButton btDelSection = null;
private JButton btUndo = null;
private JButton btSave = null;
private JLabel lTimeInterval=null;//moe
private JTextField tfInputTinter=null;//moe
private JPanel pInputTime=null; //moe
private KeyListener keyListener ; //moe

private boolean observeTrafficView = false;
private boolean currentlyObserving = false;

private String curFileName = "";
private MapSection mapSection = null;
private ScreenCaptureController screenCapturing = null;

private Vector<Section> observeTraffic = new Vector<Section>();
private BufferedImage lineImage = null;

public GuiMain() {
    super();

    try {
        // Create or delete content from the output file.
        BufferedWriter bw = new BufferedWriter(new FileWriter("." + ToolKit.fileSeparator() + OUTPUT_FILE));
        bw.close();

        // Create the "maps" directory if it doesn't exist.
        File mapsFile = new File("maps");

        if(!mapsFile.exists()) {
            if(!mapsFile.mkdir()) {
                System.out.println("Couldn't create maps directory.");
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    screenCapturing = new ScreenCaptureController(this);
    screenCapturing.addScreenCaptureListener(new ScreenCaptureController.ScreenCaptureListener() {
        public void capturedScreen() {
            if(currentlyObserving) {
                ImageAnalysis analysis = new ImageAnalysis();
                int traffic[] = analysis.colorShare(screenCapturing.getMapTrafficOnly(), lineImage);

                try {
                    // Write the results to the file.
                    PrintWriter out = new PrintWriter(new BufferedWriter(
                        new FileWriter("." + ToolKit.fileSeparator() + OUTPUT_FILE, true)));
                    out.println(traffic[0] + " - " + traffic[1] + " - " + traffic[2] + " - " + traffic[3]);
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else {
                showImage(screenCapturing.getMapTraffic());
            }
        }
    });

    initMainMenu();

    initGUI();
}

private void initGUI() {
    try {
        BorderLayout thisLayout = new BorderLayout();

        this.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                shutDown(e);
            }
        });

        getContentPane().setLayout(thisLayout);
        {
            pPaint = new JPanel();
            //getContentPane().add(pPaint, BorderLayout.NORTH);

            GridBagLayout pPaintLayout = new GridBagLayout();
            pPaintLayout.columnWidths = new int[] {7, 7, 7, 7, 7};
            pPaintLayout.rowHeights = new int[] {25};
            pPaintLayout.columnWeights = new double[] {100.0, 0.1, 0.1, 0.1, 0.1};
            pPaintLayout.rowWeights = new double[] {0.1};
            pPaint.setLayout(pPaintLayout);
            {
                cobSections = new JComboBox();
                cobSections.setRenderer(new MapSectionItemRenderer());
                pPaint.add(cobSections, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
                    GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
                    new Insets(0, 0, 0, 0), 0, 0));
                cobSections.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        cobSectionsActionPerformed(evt);
                    }
                });
            }
            {

                btUndo = new JButton();
                pPaint.add(btUndo, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
                    GridBagConstraints.CENTER, GridBagConstraints.NONE,
                    new Insets(0, 5, 0, 0), 0, 0));
                btUndo.setText("Undo");
                btUndo.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btUndoActionPerformed(evt);
                    }
                });
            }
            {

                btSave = new JButton();
                pPaint.add(btSave, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.CENTER, GridBagConstraints.NONE,
                    new Insets(0, 5, 0, 0), 0, 0));
                btSave.setText("Save");
                btSave.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btSaveActionPerformed(evt);
                    }
                });
            }

            {
                btNewSection = new JButton();
                pPaint.add(btNewSection, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
                    GridBagConstraints.CENTER, GridBagConstraints.NONE, 
                    new Insets(0, 10, 0, 0), 0, 0));
                btNewSection.setText("+ Section");
                btNewSection.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btNewSectionActionPerformed(evt);
                    }
                });
            }

            {
                lTimeInterval = new JLabel("T_interval (ms)");
                lTimeInterval.setVisible(false);
                pPaint.add(lTimeInterval, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.NONE,
                        new Insets(0, 5, 0, 0), 0, 0));
            }
            {
                btDelSection = new JButton();
                pPaint.add(btDelSection, new GridBagConstraints(4, 0, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.CENTER, GridBagConstraints.NONE, 
                    new Insets(0, 5, 0, 0), 0, 0));
                btDelSection.setText("- Section");
                btDelSection.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btDelSectionActionPerformed(evt);
                    }
                });
            }
            {

                tfInputTinter = new JTextField(3);
                tfInputTinter.setVisible(false);
                pPaint.add(tfInputTinter, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.NONE,
                        new Insets(0, 5, 0, 0), 0, 0));
            }



            imagePanel = new ImagePanel(mapSection);

            getContentPane().add(pMainMenu, BorderLayout.CENTER);



            btTrafficObserver = new JButton("Traffic Observation");
            btTrafficObserver.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    onTrafficObserverClicked(e);
                }
            });

            //getContentPane().add(btTrafficObserver, BorderLayout.SOUTH);


            pObserve = new JPanel();
            BorderLayout pObserveLayout = new BorderLayout();
            pObserve.setLayout(pObserveLayout);
            {
                JPanel pObserverButtons = new JPanel(new BorderLayout());
                {
                    btAddObserver = new JButton("Add");
                    pObserverButtons.add(btAddObserver, BorderLayout.WEST);
                    btAddObserver.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            btAddObserverActionPerformed(evt);
                        }
                    });
                }
                {
                    btDelObserver = new JButton("Remove");
                    pObserverButtons.add(btDelObserver, BorderLayout.EAST);
                    btDelObserver.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                            btDelObserverActionPerformed(evt);
                        }
                    });
                }
                pObserve.add(pObserverButtons, BorderLayout.NORTH);

                spObserve = new JScrollPane();
                spObserve.setPreferredSize(new Dimension(150, 100));
                modelObserve = new TrafficObserveModel();
                tblObserve = new JTable(modelObserve);
                tblObserve.setDefaultRenderer(Section.class, new TrafficObserveRenderer());
                tblObserve.getColumnModel().getColumn(0).setPreferredWidth(100);
                tblObserve.setIntercellSpacing(new Dimension(0, 0));
                tblObserve.setRowSelectionAllowed(true);
                tblObserve.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // moe bese sigle- selection
                spObserve.setViewportView(tblObserve);

                pObserve.add(spObserve, BorderLayout.CENTER);

                btObserving = new JButton("Observe Traffic");
                pObserve.add(btObserving, BorderLayout.SOUTH);
                btObserving.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btObservingActionPerformed(evt);
                    }
                });
            }

            //getContentPane().add(pObserve, BorderLayout.EAST);
        }

        pack();
        setSize(320, 130);
        setTitle(CLIENT_NAME);
        setLocationRelativeTo(null);
        setVisible(false);
    } catch (Exception e) {
        //add your error handling code here
        e.printStackTrace();
    }
}

private void initMainMenu() {
    try {
        BorderLayout thisLayout = new BorderLayout();

        pMainMenu = new JPanel();

        pMainMenu.setLayout(thisLayout);
        {
            JPanel pButtons = new JPanel();
            pMainMenu.add(pButtons, BorderLayout.NORTH);

            GridBagLayout pButtonsLayout = new GridBagLayout();
            pButtonsLayout.columnWidths = new int[] {7, 7, 7};
            pButtonsLayout.rowHeights = new int[] {25};
            pButtonsLayout.columnWeights = new double[] {0.1, 0.1, 0.1};
            pButtonsLayout.rowWeights = new double[] {0.1};
            pButtons.setLayout(pButtonsLayout);
            {
                JButton btLoad = new JButton();
                pButtons.add(btLoad, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.CENTER, GridBagConstraints.NONE, 
                    new Insets(0, 5, 0, 0), 0, 0));
                btLoad.setText("Load");
                btLoad.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btLoadActionPerformed(evt);
                    }
                });
            }
            {

                JButton btView = new JButton();
                pButtons.add(btView, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.CENTER, GridBagConstraints.NONE, 
                    new Insets(0, 5, 0, 0), 0, 0));
                btView.setText("View");
                btView.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btViewActionPerformed(evt);
                    }
                });
            }
            {
                JButton btNew = new JButton();
                pButtons.add(btNew, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.CENTER, GridBagConstraints.NONE, 
                    new Insets(0, 5, 0, 0), 0, 0));
                btNew.setText("New");
                btNew.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        btNewActionPerformed(evt);
                    }
                });
            }


            pInput = new JPanel();
            pInput.setVisible(false);
            pMainMenu.add(pInput, BorderLayout.CENTER);

            GridBagLayout pInputLayout = new GridBagLayout();
            pInputLayout.columnWidths = new int[] {7, 7};
            pInputLayout.rowHeights = new int[] {25};
            pInputLayout.columnWeights = new double[] {0.1, 100.0};
            pInputLayout.rowWeights = new double[] {0.1, 100.0};
            pInput.setLayout(pInputLayout);
            {
                JLabel lName = new JLabel("Name");
                pInput.add(lName, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.EAST, GridBagConstraints.NONE, 
                    new Insets(0, 5, 0, 0), 0, 0));
            }
            {

                tfInput = new JTextField();
                pInput.add(tfInput, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, 
                    new Insets(0, 5, 0, 0), 0, 0));
            }
            {
                JLabel lCoordinates = new JLabel("Coordinates");
                pInput.add(lCoordinates, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.EAST, GridBagConstraints.NONE, 
                    new Insets(0, 5, 0, 0), 0, 0));
            }
            {

                tfCoordinates = new JTextField();
                pInput.add(tfCoordinates, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, 
                    GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, 
                    new Insets(0, 5, 0, 0), 0, 0));
            }


            btCreate = new JButton("Create");
            btCreate.setVisible(false);
            btCreate.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    btCreateActionPerformed(evt);
                }
            });

            pMainMenu.add(btCreate, BorderLayout.SOUTH);
        }
    } catch (Exception e) {
        //add your error handling code here
        e.printStackTrace();
    }
}

public void showImage(BufferedImage curImage) {
    imagePanel.setImage(curImage, mapSection);

    setSize(curImage.getWidth(), curImage.getHeight() + 80);
    setLocationRelativeTo(null);
}

private void showTrafficMap() {
    if(mapSection != null) {
        screenCapturing.setMapSection(mapSection);

        if(screenCapturing.captureBaseMap()) {
            try {
                getContentPane().remove(pMainMenu);
                getContentPane().add(pPaint, BorderLayout.NORTH);
                getContentPane().add(imagePanel, BorderLayout.CENTER);
                getContentPane().add(btTrafficObserver, BorderLayout.SOUTH);

                cobSections.setModel(new DefaultComboBoxModel(mapSection.getModel()));

                if(mapSection.getModel().size() > 0) {
                    cobSections.setSelectedIndex(0);
                }

                validate();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}


private void shutDown(WindowEvent e) {
    if(mapSection != null && curFileName != "") {
        XMLManager.writeFile(curFileName, mapSection);
    }

    System.exit(0);
}

private void btSaveActionPerformed(ActionEvent evt) {
    if(mapSection != null && curFileName != "") {
        XMLManager.writeFile(curFileName, mapSection);
    }
}

private void btLoadActionPerformed(ActionEvent evt) {
    JFileChooser chooser = new JFileChooser(); 

    chooser.setCurrentDirectory(new java.io.File("maps"));
    chooser.setDialogTitle("Select Map");
    chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

    // disable the "All files" option.
    chooser.setAcceptAllFileFilterUsed(false);
    //    
    if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
        curFileName = chooser.getSelectedFile().toString();

        mapSection = XMLManager.parseFile(curFileName);

        showTrafficMap();
    } else {
        System.out.println("No Selection ");
    }
}

private void btViewActionPerformed(ActionEvent evt) {
    if(USE_PARAMETERS) {
        String htmlFilePath = "html" + ToolKit.fileSeparator() + "trafficPrototype.html";
        File htmlFile = new File(htmlFilePath);

        String[] params = {"coord=(26.370628,-80.104281),11", "view=1"};
        ToolKit.openBrowser(htmlFile.toURI(), params);
    } else {
        String htmlFilePath = "html" + ToolKit.fileSeparator() + "trafficPrototype2.html";
        File htmlFile = new File(htmlFilePath);

        HtmlController.writeParameterScript(26.370628, -80.104281, 11, 1);
        ToolKit.openBrowser(htmlFile.toURI());
    }
}

private void btNewActionPerformed(ActionEvent evt) {
    pInput.setVisible(true);
    btCreate.setVisible(true);
}

private void btCreateActionPerformed(ActionEvent evt) {
    String fileName = tfInput.getText();
    String coords = tfCoordinates.getText();

    String coord = coords.replace("(", "").replace(")", "");
    String[] params = coord.split(",");

    boolean invalidCoord = false;
    double lat = 0.0;
    double lng = 0.0;
    int zoom = 0;

    try {
        lat = Double.parseDouble(params[0].trim());
        lng = Double.parseDouble(params[1].trim());
        zoom = Integer.parseInt(params[2].trim());
    } catch(Exception e) {
        invalidCoord = true;
    }

    if(!invalidCoord) {
        mapSection = new MapSection(fileName, lat, lng, zoom);

        fileName = fileName.replace(" ", "_");

        curFileName = "." + ToolKit.fileSeparator() + "maps" + ToolKit.fileSeparator() + fileName + ".xml";
        XMLManager.writeFile(curFileName, mapSection);

        showTrafficMap();
    } else {
        JOptionPane.showMessageDialog(this, "Invalid Coordinates!", "Coordinates", JOptionPane.ERROR_MESSAGE);
    }
}

private void cobSectionsActionPerformed(ActionEvent evt) {
    imagePanel.setCurrentSection((Section)cobSections.getSelectedItem());

    imagePanel.repaint();
}

private void btUndoActionPerformed(ActionEvent evt) {
    if(cobSections.getSelectedIndex() != -1) {
        Section selectedSection = (Section)cobSections.getSelectedItem();

        if(selectedSection.removeLastAddedItem()) {
            imagePanel.repaint();
        }
    }
}

private void btNewSectionActionPerformed(ActionEvent evt) {
    String newSectionName = "";

    newSectionName = JOptionPane.showInputDialog(this, "Input your new section name.", 
        "New Section", JOptionPane.QUESTION_MESSAGE);

    if(newSectionName != null && !newSectionName.equals("")) {
        Section section = new Section(newSectionName);

        if(mapSection.addSection(section)) {
            cobSections.setSelectedIndex(cobSections.getItemCount() - 1);
        } else {
            JOptionPane.showMessageDialog(this, "Section " + newSectionName + " already exists!", 
                "New Section", JOptionPane.INFORMATION_MESSAGE);
        }
    }
}

private void btDelSectionActionPerformed(ActionEvent evt) {
    if(cobSections.getSelectedIndex() != -1) {
        int selectedOption = JOptionPane.showConfirmDialog(this, "Delete " + 
            ((Section)cobSections.getSelectedItem()).getId() + " section?", 
            "Delete Section", JOptionPane.YES_NO_CANCEL_OPTION);

        if(selectedOption == JOptionPane.YES_OPTION) {
            mapSection.getSections().remove(cobSections.getSelectedIndex());
            cobSections.setSelectedIndex(0);
        }
    }
}

private void btAddObserverActionPerformed(ActionEvent evt) {
    if(cobSections.getSelectedIndex() != -1) {
        Section sectionToAdd = (Section)cobSections.getSelectedItem();
        boolean duplicate = false;

        for(Section section : observeTraffic) {
            if(section.getId().equals(sectionToAdd.getId())) {
                duplicate = true;
            }
        }

        if(!duplicate) {
            observeTraffic.add(sectionToAdd);

            modelObserve.setData(observeTraffic);

            imagePanel.repaint();
        }
    }
}

private void btDelObserverActionPerformed(ActionEvent evt) {
    if(tblObserve.getSelectedRow() != -1) {
        observeTraffic.remove(tblObserve.getSelectedRow());

        modelObserve.setData(observeTraffic);

        imagePanel.repaint();
    }
}

private void btObservingActionPerformed(ActionEvent evt) {

    String timeInterval = tfInputTinter.getText();//moe

    if(modelObserve.getRowCount() > 0) {
        if(currentlyObserving) {
            currentlyObserving = false;

            btObserving.setText("Observe Traffic");

            screenCapturing.stopCapturing();
        } else {
            currentlyObserving = true;

            btObserving.setText("Stop Observing");

            lineImage = imagePanel.getLineImage();

            if(!timeInterval.trim().isEmpty()) //moe
            {
                tfInputTinter.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        //btObserving.setText("Stop Observing");
                    }
                });


                 TRAFFIC_REFRESH_RATE=Integer.parseInt(timeInterval);//moe
                 screenCapturing.captureAutomatically(TRAFFIC_REFRESH_RATE);
            }

        }
    } else {
        JOptionPane.showMessageDialog(this, "There are no sections selected.", 
            "Observe Traffic", JOptionPane.INFORMATION_MESSAGE);
    }


}


private void onTrafficObserverClicked(ActionEvent e) {
    if(observeTrafficView) {
        observeTrafficView = false;

        btTrafficObserver.setText("Traffic Observation");

        btUndo.setVisible(true);
        btSave.setVisible(true);
        btNewSection.setVisible(true);
        btDelSection.setVisible(true);

        lTimeInterval.setVisible(false);
        tfInputTinter.setVisible(false);

        getContentPane().remove(pObserve);
    } else {
        observeTrafficView = true;

        btTrafficObserver.setText("Traffic Manipulation");

        btUndo.setVisible(false);
        btSave.setVisible(false);
        btNewSection.setVisible(false);
        btDelSection.setVisible(false);

        lTimeInterval.setVisible(true);
         tfInputTinter.setVisible(true);



        getContentPane().add(pObserve, BorderLayout.EAST);
    }

    imagePanel.setObserveTraffic(observeTraffic, observeTrafficView);
    validate();
    }
}

Can anybody help me how to resolve this? I would like to make a new jar file, but I suppose I should rebuild the project without warnings first.

Thanks in advance.

carexcer
  • 1,407
  • 2
  • 15
  • 27
user3186565
  • 9
  • 1
  • 3
  • 5
    Did you do as the compiler suggests: "Recompile with -Xlint:unchecked for details"? What additional info did you see? – rgettman Jan 17 '14 at 17:01

2 Answers2

0

Can anybody help me how to resolve this? I would like to make a new jar file, but I suppose I should rebuild the project without warnings first.

Of course that you can compile with warnings if you haven't errors, but you must be careful with the logic of your app more than "0 warnings".

See this question, it could be helpful for you.

Community
  • 1
  • 1
carexcer
  • 1,407
  • 2
  • 15
  • 27
0

JComboBox is a generic type that needs a type parameter to indicate the type of the items the JComboBox presents. You have not provided this type parameter, so the compiler issues the warning you see. In your case, you'll want to declare it as JComboBox<Section>, and make a similar change to the DefaultComboBoxModel, since it too needs this type parameter. Once you've done that, you can also remove those casts you're currently doing when you get items from the combo box.

Ian McLaird
  • 5,507
  • 2
  • 22
  • 31