I do have problem overtime I run the code I keep getting this error I'm not sure what number to put based on my understanding it should work but nothing work so far, any suggestions? Error:
2016-02-18 12:30:13.946 java[8642:1823896] *** WARNING: Method userSpaceScaleFactor in class NSWindow is deprecated on 10.7 and later. It should not be used in new applications. Use convertRectToBacking: instead.
1148
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at test_guiiii.image_Open_nw$1$1.mouseClicked(image_Open_nw.java:81)
at java.awt.Component.processMouseEvent(Component.java:6538)
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:4534)
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)
The source code causing the problem
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class image_Open_nw {
String sCurrentLine, new_string;
public void Mouse(BufferedImage img) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
//BufferedImage img = ImageIO.read(new File("result.jpg"));
final ImagePanel imgPane = new ImagePanel(img);
JScrollPane scrollPane = new JScrollPane(imgPane);
final JLabel report = new JLabel("...");
final JButton bt = new JButton("save");
bt.setPreferredSize(new Dimension(55,20));
imgPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
Point panelPoint = e.getPoint();
Point imgContext = imgPane.toImageContext(panelPoint);
JFrame f = new JFrame();
f.setUndecorated(true);
f.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
f.getContentPane().setLayout(new FlowLayout());
//f.setAlwaysOnTop(true);
//report.setText("clicked at " + panelPoint + " which is relative to the image " + imgContext);
try (BufferedReader br = new BufferedReader(new FileReader("Coordinates.csv")))
{
while ((sCurrentLine = br.readLine()) != null) {
String[] anArr1 = sCurrentLine.split("\\)\\s*");
List<Point> points = new ArrayList<Point>();
String[] anArr = anArr1[0].split("\\(\\s*");
***int x = Integer.parseInt(anArr[1].substring(0,anArr[1].indexOf(",")));***
int y = Integer.parseInt(anArr[1].substring(anArr[1].indexOf(",") + 1, anArr[1].length()));
int x1 = Integer.parseInt(anArr1[2].substring(1,anArr1[2].indexOf(",")));
int y1 = Integer.parseInt(anArr1[2].substring(anArr1[2].indexOf(",") + 1, anArr1[2].length()));
Point p = new Point(x,y);
points.add(p);
String [] a0 = anArr[0].split("\\ \\s*");
String [] a1 = anArr1[4].split("\\ \\s*");
if(panelPoint.x > x && panelPoint.x < x1 && panelPoint.y > y && panelPoint.y < y1){
JTextField Text1 = new JTextField(a0[0]);
JTextField Text2 = new JTextField(a0[1]);
JTextField Text3 = new JTextField(a0[2]);
JTextField Text4 = new JTextField(a0[3]);
JTextField Text5 = new JTextField(a0[4]);
JTextField Text6 = new JTextField(" "+anArr[1]+ " " + anArr1[1] +" "+ anArr1[2] +" "+ anArr1[3]);
JTextField Text7 = new JTextField(a1[0]);
JTextField Text8 = new JTextField(a1[1]);
JTextField Text9 = new JTextField(a1[2]);
Text6.setEditable(false);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// f.getContentPane().setLayout(new FlowLayout());
f.getContentPane().add(Text1);
f.getContentPane().add(Text2);
f.getContentPane().add(Text3);
f.getContentPane().add(Text4);
f.getContentPane().add(Text5);
f.getContentPane().add(Text6);
f.getContentPane().add(Text7);
f.getContentPane().add(Text8);
f.getContentPane().add(Text9);
f.getContentPane().add(bt,BorderLayout.AFTER_LAST_LINE);
f.pack();
f.setLocation(scrollPane .getWidth()/2 - f.getWidth()/2,scrollPane .getHeight()/4);
f.setVisible(true);
bt.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e1) {
f.setVisible(false);
write(panelPoint,Text1,Text2,Text3,Text4,Text5,Text6,Text7,Text8,Text9);
}
});
}
}
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
JFrame frame = new JFrame("Processed Image");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane);
frame.add(report, BorderLayout.SOUTH);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public void write(Point panelPoint,JTextField Text1,JTextField Text2,JTextField Text3,JTextField Text4,JTextField Text5,JTextField Text6,JTextField Text7,JTextField Text8,JTextField Text9){
String format ="%-20s%-20s%-20s%-20s%-20s%-20s%-20s%-20s%-20s%-20s%s%n";
try (BufferedReader br = new BufferedReader(new FileReader("Coordinates.csv")))
{
PrintWriter out = new PrintWriter("Coordinates_new.csv");
while ((sCurrentLine = br.readLine()) != null) {
String[] anArr1 = sCurrentLine.split("\\)\\s*");
List<Point> points = new ArrayList<Point>();
String[] anArr = anArr1[0].split("\\(\\s*");
int x = Integer.parseInt(anArr[1].substring(0,anArr[1].indexOf(",")));
int y = Integer.parseInt(anArr[1].substring(anArr[1].indexOf(",") + 1, anArr[1].length()));
int x1 = Integer.parseInt(anArr1[2].substring(1,anArr1[2].indexOf(",")));
int y1 = Integer.parseInt(anArr1[2].substring(anArr1[2].indexOf(",") + 1, anArr1[2].length()));
Point p = new Point(x,y);
points.add(p);
String [] a0 = anArr[0].split("\\ \\s*");
String [] a1 = anArr1[4].split("\\ \\s*");
if(panelPoint.x > x && panelPoint.x < x1 && panelPoint.y > y && panelPoint.y < y1){
out.printf(format,Text1.getText(),Text2.getText(),Text3.getText(),Text4.getText(),Text5.getText(),anArr[1], anArr1[1], anArr1[2], anArr1[3],Text4.getText(),Text5.getText(),Text6.getText());
}
else{
out.printf(format,a0[0],a0[1],a0[2],a0[3],a0[4],anArr[1], anArr1[1], anArr1[2], anArr1[3],a1[0],a1[1],a1[2]);
}
}
br.close();
out.close();
File realName = new File("Coordinates.csv");
realName.delete(); // remove the old file
new File("Coordinates_new.csv").renameTo(realName);
} catch (IOException e1) {
e1.printStackTrace();
}
}
public class ImagePanel extends JPanel {
private BufferedImage img;
public ImagePanel(BufferedImage img) {
this.img =img;
int h = img.getHeight(null);
int w = img.getWidth(null);
int ii=0;
int temp=0,temp1 = 0;
for(int i=1; i< 100; i++){
temp = h/i;
temp1 = w/i;
//System.out.println(temp);
if(temp < 800){
ii = i;
i = 102;
}
}
BufferedImage resizedImg = new BufferedImage(temp1, temp, BufferedImage.TRANSLUCENT);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(img, 0, 0,temp1, temp, null);
g2.dispose();
// this.img = resizedImg;
}
@Override
public Dimension getPreferredSize() {
return img == null ? super.getPreferredSize() : new Dimension(img.getWidth(), img.getHeight());
}
protected Point getImageLocation() {
Point p = null;
if (img != null) {
int x = (getWidth() - (img.getWidth())) / 2;
int y = (getHeight() - (img.getHeight())) / 2;
p = new Point(x, y);
}
return p;
}
public Point toImageContext(Point p) {
Point imgLocation = getImageLocation();
Point relative = new Point(p);
relative.x -= imgLocation.x;
relative.y -= imgLocation.y;
return relative;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (img != null) {
Point p = getImageLocation();
g.drawImage(img, p.x, p.y, this);
}
}
}
}
Note : the error is in line 81 I'll make it bold to be easy to find from the code