Hallo,
ich habe heute eine GUI zusammengebastelt, und rufe über einen ActionListener (von dem bsync-Button) die Klasse PDA auf, wo ich im Konstruktur eine Verbindung zu einem PDA aufbaue und von dort die Daten auslese. Das funktioniert auch soweit. Nun habe ich allerdings das Problem das ich es zwar hinbekomme aus der PDA Klasse die richtige Setter-Methode in der GUi-Klasse aufzurufen Java dann allerdings nicht das entsprechende Label aktualisiert. Konkret bedeutet dieses ich bekomme es zwar hin aus der Klasse PDA die Methode setStatusbar() aufzurufen, er aber trotzdem nicht das entsprechende Label aktualisiert.
Mein Quellcode (leich zusammen gestrichen) sieht im moment so aus:
Die GUI Klasse
Die Klasse PDA:
Ich wäre über einen kleinen HInweis warum er zwar die Methode aufruft und auch den Wert übernimmt, er es aber nicht hinbekommt das Label zu aktualisieren sehr dankbar.
Viele Grüsse
Dan
ich habe heute eine GUI zusammengebastelt, und rufe über einen ActionListener (von dem bsync-Button) die Klasse PDA auf, wo ich im Konstruktur eine Verbindung zu einem PDA aufbaue und von dort die Daten auslese. Das funktioniert auch soweit. Nun habe ich allerdings das Problem das ich es zwar hinbekomme aus der PDA Klasse die richtige Setter-Methode in der GUi-Klasse aufzurufen Java dann allerdings nicht das entsprechende Label aktualisiert. Konkret bedeutet dieses ich bekomme es zwar hin aus der Klasse PDA die Methode setStatusbar() aufzurufen, er aber trotzdem nicht das entsprechende Label aktualisiert.
Mein Quellcode (leich zusammen gestrichen) sieht im moment so aus:
Die GUI Klasse
Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class GUI
extends JFrame
{
private GUI gui=null;
private JButton bsync=new JButton();
// Statusleiste
JLabel lstatus=new JLabel();
public GUI()
{
super("Palm-Sunbird-Syncronisation");
gui=this;
JPanel panel=new JPanel();
panel.setLayout(null);
// Positionieren des Buttons
bsync.setBounds(120, 53, 60, 32);
bsync.setIcon(new ImageIcon(getClass().getResource("sync.gif")));
// Positionieren der Statuszeile
lstatus.setBounds(0, 95, 220, 20);
panel.add(bsync);
panel.add(lstatus);
lstatus.setText("bereit...");
Container contentPane=getContentPane();
contentPane.add(panel);
// Listener für den Sync-Button
bsync.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// Quelldaten aus dem Palm bzw. Sunbird
ArrayList<DatasetPDA> source_PDA=null;
PDA pda01=new PDA(tfppath.getText(),gui);
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
// Setzen des Textes für die Statuszeile
public void setStatusbar(String text)
{
lstatus.setText(text); // <-- hier sollte eigentlich das Label aktualisiert werden....
}
}
Die Klasse PDA:
Code:
import java.io.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
public class PDA
{
GUI gui=null;
public PDA(String port, GUI gui)
{
File fp=new File(port);
int timer=50;
this.gui=gui;
System.out.println("Überprüfung auf die Existenz des Devices");
// Falls das Device nicht existiert
// (Das Device wird nach dem drücken des HotSync-Knopfes erzeugt)
if(!fp.exists())
{
// Suche 50 Sekunden lang nach dem Device
while(!fp.exists() && timer!=0)
{
try
{
System.out.print(".");
Thread.sleep(1000);
timer--;
gui.setStatusbar("foo"); // <---- gui.setStatusbar wird ordnungsgemäß aufgerufen
}
catch(Exception e)
{
}
}
}
//...
Ich wäre über einen kleinen HInweis warum er zwar die Methode aufruft und auch den Wert übernimmt, er es aber nicht hinbekommt das Label zu aktualisieren sehr dankbar.
Viele Grüsse
Dan