Hallo,
ich habe das gleiche Problem wie in diesem Thema beschrieben:
http://www.java-forum.org/allgemeine-java-themen/39306-awt-eventqueue-1-java-lang-arrayindexoutofbounds.html#post245020
Folgende Meldung bekomme ich:
Hier noch der Code den ich hab laufen lassen:
Die Meldungen kommen unregelmäßig, aber öfters wenn ich wild in der Tabelle rumklicke.
Wenn ich die Zeile
auskommentiere sind auch die Meldungen weg.
Das Problem liegt also bei dem Array und wie ich es an .setDataVector übergebe, aber was mache ich falsch?
viele Grüße
kurm_de
ich habe das gleiche Problem wie in diesem Thema beschrieben:
http://www.java-forum.org/allgemeine-java-themen/39306-awt-eventqueue-1-java-lang-arrayindexoutofbounds.html#post245020
Folgende Meldung bekomme ich:
Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:470)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:294)
at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderRenderer(BasicTableHeaderUI.java:693)
at javax.swing.plaf.basic.BasicTableHeaderUI.getHeaderHeight(BasicTableHeaderUI.java:737)
at javax.swing.plaf.basic.BasicTableHeaderUI.createHeaderSize(BasicTableHeaderUI.java:765)
at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:796)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1651)
at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:95)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1653)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:723)
at java.awt.Container.layout(Container.java:1503)
at java.awt.Container.doLayout(Container.java:1492)
at java.awt.Container.validateTree(Container.java:1688)
at java.awt.Container.validate(Container.java:1623)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:653)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1620)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Hier noch der Code den ich hab laufen lassen:
Java:
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumnModel;
public class anzeige extends JApplet {
JButton button;
JPanel panel, paneloben;
JScrollPane scrollPane;
JLabel titel = new JLabel(" M a t A n - 2 0 1 3 ");
JLabel statuszeile = new JLabel("");
String[] spaltenbeschriftung = {"Kürzel", "Produkt", "Bezeichnung", "Menge", "Status"};
JTable table;
DefaultTableModel tabModel;
TableColumnModel columnModel;
int x=0;
public void init(){
tabModel = new DefaultTableModel();
tabModel.setRowCount(x);
table = new JTable(tabModel);
tabModel.setDataVector(ladeData(), spaltenbeschriftung);
table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
columnModel = table.getColumnModel();
paneloben = new JPanel();
paneloben.setLayout(new BoxLayout(paneloben, BoxLayout.X_AXIS));
paneloben.add(titel);
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
scrollPane = new JScrollPane(table, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setViewportView(table);
panel.add(paneloben);
panel.add(scrollPane);
panel.add(statuszeile);
add(panel);
setVisible(true);
validate();
refresh();
while (true) {
try{
refresh();
Thread.sleep(200);
}catch(InterruptedException e){System.out.print(e);}
}
}
public void refresh(){
System.out.println("refresh");
tabModel.setDataVector(ladeData(), spaltenbeschriftung);
columnModel.getColumn( 0 ).setPreferredWidth( 50 );
columnModel.getColumn( 1 ).setPreferredWidth( 140 );
columnModel.getColumn( 2 ).setPreferredWidth( 440 );
columnModel.getColumn( 3 ).setPreferredWidth( 50 );
columnModel.getColumn( 4 ).setPreferredWidth( 100 );
}
public String[][] ladeData(){
x=0;
String[][] data = new String[200][5];
try {
File DatenDatei = new File(getParameter("DateiPSL"));
FileReader fileReader = new FileReader(DatenDatei);
BufferedReader reader = new BufferedReader(fileReader);
String zeile = null;
String stat[] = ladeStatus();
while ((zeile = reader.readLine()) != null) {
if(zeile.equals("")) {
} else{
String cutter = ("\\|#\\|");
String[] zsplit = zeile.split(cutter);
data[x][0] = zsplit[6];
data[x][1] = zsplit[2];
data[x][2] = zsplit[3];
data[x][3] = zsplit[4];
for(int i=1;i<= Integer.parseInt(stat[0]);i++){
String[] statSplit = stat[i].split(cutter);
if(statSplit[0].equals(zsplit[0])){
data[x][4] = statSplit[1];
break;
}
}
x=x+1;
}
}
x--;
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
public String[] ladeStatus() {
String[] status = new String[500];
int y=1;
try {
File StatusDatei = new File(getParameter("DateiStatus"));
FileReader fileReader = new FileReader(StatusDatei);
BufferedReader reader = new BufferedReader(fileReader);
String zeile = null;
while ((zeile = reader.readLine()) != null) {;
if(zeile.equals("")) {
} else{
status[y] = zeile;
status[0]=String.valueOf(y);
y=y+1;
}
}
reader.close();
}catch (IOException e) {
e.printStackTrace();
}
return status;
}
}
Die Meldungen kommen unregelmäßig, aber öfters wenn ich wild in der Tabelle rumklicke.
Wenn ich die Zeile
Java:
tabModel.setDataVector(ladeData(), spaltenbeschriftung);
Das Problem liegt also bei dem Array und wie ich es an .setDataVector übergebe, aber was mache ich falsch?
viele Grüße
kurm_de