SwingUtilities.invokeLater wie?
liebe großmeister der Javaprogrammierung.
ich habe mal wieder ein wirklich noobiges problem, und auch schon einen lösungsansatz gefunden. nur wie nutze ich diesen?
gehts sich um folgendes.
ich habe eine table mit defaultTableModel.
diese macht ein fireTableDataChange().
die daten kommen aus einem vector.
da Swing nicht threadsicher ist, kann es passieren, das im vector die daten nicht rechtzeitig bereit gestellt werden können, sondern Swing zwischen leeren des vectors, und neu befüllen schon auf diesen zugreift, was dann zwangläufig zu einer java.lang.ArrayIndexOutOfBoundsException führt.
nun habe ich nach langem suchen gefunden, das man dieses mit
korrigieren kann.
mein problem ist leider, das ich noch nicht so swing sicher bin, das ich diese info 100% verwerten, und nutzen kann.
mein code, in den dieses vermutlich hinein muss ist hier
also in etwa so:
dort verhält es sich jedoch so, das er mir sagt, -> The method holeDaten() is undefined for the type new Runnable(){}
wie lös ich nun mein problemchen? leider geht das nicht mit einem becherchen
oder gehe ich die ganze sache gedanklich falsch an?
wie immer einen herzlichen dank an alle helfer.
liebe großmeister der Javaprogrammierung.
ich habe mal wieder ein wirklich noobiges problem, und auch schon einen lösungsansatz gefunden. nur wie nutze ich diesen?
gehts sich um folgendes.
ich habe eine table mit defaultTableModel.
diese macht ein fireTableDataChange().
die daten kommen aus einem vector.
da Swing nicht threadsicher ist, kann es passieren, das im vector die daten nicht rechtzeitig bereit gestellt werden können, sondern Swing zwischen leeren des vectors, und neu befüllen schon auf diesen zugreift, was dann zwangläufig zu einer java.lang.ArrayIndexOutOfBoundsException führt.
nun habe ich nach langem suchen gefunden, das man dieses mit
Code:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//dein Code...
}
}
mein problem ist leider, das ich noch nicht so swing sicher bin, das ich diese info 100% verwerten, und nutzen kann.
mein code, in den dieses vermutlich hinein muss ist hier
Code:
public MainTable()
{
super("MainTable");
while (isrunning == true)
{
if (firstrun == 0)
{
this.TabelleErzeugen(holeDaten());
this.initGUI();
firstrun = 1;
}
this.TabelleUpdate(this.holeDaten()); <----- HIER?
this.setDax();
catch (NullPointerException nullpe){}
catch (ArrayIndexOutOfBoundsException aioobex){}
this.holeDaten();
}
}
also in etwa so:
Code:
public MainTable()
{
super("MainTable");
while (isrunning == true)
{
if (firstrun == 0)
{
this.TabelleErzeugen(holeDaten());
this.initGUI();
firstrun = 1;
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
this.TabelleUpdate(this.holeDaten());
}
});
this.setDax();
e.getMessage();
}
catch (NullPointerException nullpe){}
catch (ArrayIndexOutOfBoundsException aioobex){}
this.holeDaten();
}
dort verhält es sich jedoch so, das er mir sagt, -> The method holeDaten() is undefined for the type new Runnable(){}
wie lös ich nun mein problemchen? leider geht das nicht mit einem becherchen
oder gehe ich die ganze sache gedanklich falsch an?
wie immer einen herzlichen dank an alle helfer.