Hallo zusammen,
ich habe ein kleines Problem. Ich habe ein kleines Applet auf dem mehrere Checkboxen sind welche sich in einer jTable befinden. Über ein tableChanged Event frage den Status der Checkboxen ab und verarbeite ihn.
So weit so gut. Nun habe ich noch einen SwingTimer in die Start() Funktion eingebaut.
Sobald ich im Timer die Updatefunktion aktiviere funktioniert im tableChanged Event das Auslesen der Checkboxen nicht mehr.
Es scheint so als ob der Timer die GUI sperren würde und kein Update mehr durchgeführt werden würde.
Hat jemand eine Idee oder ein ähnliches Verhalten schon mal gehabt?
Gruß René
ich habe ein kleines Problem. Ich habe ein kleines Applet auf dem mehrere Checkboxen sind welche sich in einer jTable befinden. Über ein tableChanged Event frage den Status der Checkboxen ab und verarbeite ihn.
Java:
table1 = new JTable(dm1) {
public void tableChanged(TableModelEvent e) {
int x;
int y;
y = e.getFirstRow();
x = e.getColumn();
System.out.println("tableChanged (" + y + "," + x + ")");
if (x == 0 && y >= 0) {
System.out.println("Radiobutton change");
connection.ChannelSelect(y + 1);
}
if (x == 2 && y >= 0) {
System.out.println("Checkbox change");
connection.setChannel(getCheckBoxes());
}
super.tableChanged(e);
repaint();
}
};
So weit so gut. Nun habe ich noch einen SwingTimer in die Start() Funktion eingebaut.
Java:
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println ("Timer");
<Aufruf von Updatefunktionen für die Checkboxen>
}
};
t = new Timer(1000, taskPerformer);
t.start();
Sobald ich im Timer die Updatefunktion aktiviere funktioniert im tableChanged Event das Auslesen der Checkboxen nicht mehr.
Java:
private String[] getCheckBoxes() {
int i = 0;
String son = "";
String soff = "";
String[] res = new String[2];
res[0] = "";
res[1] = "";
for (i=0; i<table1.getRowCount(); i++)
{
System.out.println ("getCheckBoxes " + i);
if (((JCheckBox)dm1.getValueAt(i,2)).getSelectedObjects() != null)
son=son+(i+1)+",";
else
soff=soff+(i+1)+",";
}
System.out.println ("son: " + son);
System.out.println ("son: " + soff);
if (son.length() > 0)
res[0] = son.substring(0, son.length()-1);
if (soff.length() > 0)
res[1] = soff.substring(0, soff.length()-1);
return res;
}
Es scheint so als ob der Timer die GUI sperren würde und kein Update mehr durchgeführt werden würde.
Hat jemand eine Idee oder ein ähnliches Verhalten schon mal gehabt?
Gruß René