Ein herzliches Hallo...
hier seht ihr nun mein erstes Java Prgramm, dass mir auch gleich kräftig Nerven kostet!!
Kurz zu meiner Situation:
Das ganze stellt eine Tabelle die mit Objecten gefüllt werden soll.
Jede sekunde wird die Funktion "doAction" aussgeführt, welche mich mit den aktuellen Daten versorgt. (Daten kommen als Vector und werden dann meinen variablen zugewiesen)
Mein plan war also, in der "for (int i=0; i<alarmliste.size();i++)" Schleife alle Infos auszulesen und in die Tabelle zu speichern.
Allerdings bleibt bei mir immer nur die erste zeile der Spalte stehen (mit 0ern) :-(
Wie kann ich swing dazu bringen die Tabelle mit den werten neu zu zeichnen?
Scheinbar funktioniert es nicht mit repaint()
Irgendwelche Ideen?
Danke, der Javadepp
hier seht ihr nun mein erstes Java Prgramm, dass mir auch gleich kräftig Nerven kostet!!
Kurz zu meiner Situation:
Das ganze stellt eine Tabelle die mit Objecten gefüllt werden soll.
Jede sekunde wird die Funktion "doAction" aussgeführt, welche mich mit den aktuellen Daten versorgt. (Daten kommen als Vector und werden dann meinen variablen zugewiesen)
Mein plan war also, in der "for (int i=0; i<alarmliste.size();i++)" Schleife alle Infos auszulesen und in die Tabelle zu speichern.
Allerdings bleibt bei mir immer nur die erste zeile der Spalte stehen (mit 0ern) :-(
Wie kann ich swing dazu bringen die Tabelle mit den werten neu zu zeichnen?
Scheinbar funktioniert es nicht mit repaint()
Code:
public AlarmListApplet() {
setLayout(new BorderLayout());
Panel titel = new Panel();
titel.add((labelTitel = new JLabel("Alarmliste")));
add("North", titel);
//------Tabelle ---
tabelle = new JTable(new MyTableModel());
//------tabelle.setModel(tm);
JScrollPane scrollPane = new JScrollPane(tabelle);
tabelle.setPreferredScrollableViewportSize(new Dimension(500, 200));
tabelle.getTableHeader().setReorderingAllowed(false);
tabelle.getTableHeader().setResizingAllowed(false);
tabelle.getColumn("zugewiesen").setMinWidth(0);
tabelle.getColumn("zugewiesen").setMaxWidth(0);
Panel test = new Panel();
test.add(tabelle.getTableHeader());
test.add(scrollPane);
add("Center",test);
//------Tabelle ende ---
//------Panel für die AlarmButtons (Sueden)
Panel sueden = new Panel();
sueden.setLayout(new GridLayout(1,0));
//------Buttons für das zugehörige Panel werden erstellt
loeschen = new JButton("Löschen");
sueden.add(loeschen);
loeschen.addActionListener(this);
uebertragen = new JButton("Übertragen");
sueden.add(uebertragen);
uebertragen.addActionListener(this);
zurueck= new JButton("Zurückgeben");
sueden.add(zurueck);
zurueck.addActionListener(this);
add("South", sueden);
}
class MyTableModel extends AbstractTableModel //implements TableModelListener
{
private static final long serialVersionUID = 1L;
private String[] columnNames = {"Action","AlarmID", "SensorID", "Uhrzeit", "zugewiesen"};
private Object[][] data = {{new Boolean(true), alarmID, sensorID, timeStamp, "1"}};
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return (String)columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
//---Setzt Tabelle auf nicht editierbar; außer die Checkboxen...
public boolean isCellEditable(int row, int col) {
return col==0;
}
public void ActionPerformed(ActionEvent event){
if (event.getSource() == loeschen)
{
setVisible(false);
System.exit(0);
}
if (event.getSource()== zurueck)System.exit(0);
else System.exit(0);
}
public void init() {
AlarmListApplet ma = new AlarmListApplet();
setSize(500,200);
}
// public void tableChanged(TableModelEvent e) {
// // TODO Auto-generated method stub
//
// }
}
public void doAction(){
try {
if (servletName==null || servletName.length()==0)return;
URL servlet = new URL( servletName);
AppletRequest newReq = new AppletRequest();
newReq.setRequestType(RequestType.ALARMLISTE);
Serializable objs[] = {newReq};
ObjectInputStream inStream = postObjects( servlet, objs);
Hashtable data = (Hashtable)inStream.readObject();
Vector vec = (Vector)data.get("alarmListe");
setAlarmliste(vec);
inStream.close();
} catch (Exception e) {e.printStackTrace();}
for (int i=0; i<alarmliste.size();i++)
{
int j=1;
AlarmInfo alarm= (AlarmInfo)alarmliste.get(i);
alarmID=alarm.getAlarmID();
tabelle.setValueAt(alarmID, i , j);
j++;
AlarmInfo alarm2 = (AlarmInfo)alarmliste.get(i);
sensorID=alarm2.getTrack().getTrack()[0].getSensorID();
tabelle.setValueAt(sensorID, i, j);
j++;
AlarmInfo alarm3 = (AlarmInfo)alarmliste.get(i);
timeStamp=alarm3.getTrack().getTrack()[0].getTimeStamp();
tabelle.setValueAt(timeStamp, i, j);
j++;
tabelle.repaint();
tabelle.revalidate();
}
}
// public void setValueAt(Object val, int row, int col) {
// fireTableCellUpdated(row, col);
// data[row][col]=val;
// }
protected void readParameterForInit() {
servletName = getParameter("servletName");
setDelay(1000);
}
public void setAlarmliste(Vector vector) {
alarmliste = vector;
}
// public void fireTableCellUpdated(int row, int column) {
// tm.fireTableDataChanged();
// }
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
}
Irgendwelche Ideen?
Danke, der Javadepp