“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutOfBoundsException:数组中的1
我确实有问题超时我运行的代码我不断得到这个错误我不知道什么数字,根据我的理解,它应该工作,但没有工作,到目前为止,任何建议放在数字? 错误: 导致问题的源代码“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutOfBoundsException:数组中的1,java,arrays,eclipse,mouselistener,Java,Arrays,Eclipse,Mouselistener,我确实有问题超时我运行的代码我不断得到这个错误我不知道什么数字,根据我的理解,它应该工作,但没有工作,到目前为止,任何建议放在数字? 错误: 导致问题的源代码 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Graphic
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);
}
}
}
}
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.FlowLayout;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.Point;
导入java.awt.RenderingHints;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.awt.image.buffereImage;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JRootPane;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类图像\u Open\u nw{
字符串sCurrentLine,新的\u字符串;
公用无效鼠标(BuffereImage img){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
//buffereImage img=ImageIO.read(新文件(“result.jpg”);
最终图像面板img平面=新图像面板(img);
JScrollPane scrollPane=新的JScrollPane(imgPane);
最终JLabel报告=新JLabel(“…”);
最终JButton bt=新JButton(“保存”);
bt.setPreferredSize(新尺寸(55,20));
imgPane.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent e){
Point panelPoint=e.getPoint();
Point imgContext=imgPane.toImageContext(panelPoint);
JFrame f=新的JFrame();
f、 未装饰的设置(真实);
f、 getRootPane().setWindowDecorationStyle(JRootPane.NONE);
f、 getContentPane().setLayout(新的FlowLayout());
//f、 setAlwaysOnTop(真);
//report.setText(“在“+panelPoint+”处单击,该位置相对于图像“+imgContext”);
try(BufferedReader br=new BufferedReader(new FileReader(“Coordinates.csv”))
{
而((sCurrentLine=br.readLine())!=null){
字符串[]anArr1=sCurrentLine.split(“\\)\\s*”;
列表点=新的ArrayList();
字符串[]anArr=anArr1[0]。拆分(\\(\\s*);
***int x=Integer.parseInt(anArr[1]。子字符串(0,anArr[1]。indexOf(“,”)***
int y=Integer.parseInt(anArr[1]。子字符串(anArr[1]。indexOf(“,”)+1,anArr[1]。length());
int x1=Integer.parseInt(anArr1[2]。子字符串(1,anArr1[2]。indexOf(“,”);
int y1=Integer.parseInt(anArr1[2]。子字符串(anArr1[2]。indexOf(“,”+1,anArr1[2].length());
点p=新点(x,y);
增加(p);
字符串[]a0=anArr[0]。拆分(“\\\\s*”);
字符串[]a1=anArr1[4]。拆分(“\\\\s*”);
if(panelPoint.x>x&&panelPoint.xy&&panelPoint.yimport 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);
}
}
}
}