moin
ich möchte mein gui über änderungen der verarbeitenden klasse informieren.
dazu möchte ich die observer design pattern einsetzen.
ich habe mir die FAQ zu observer hier im forum gelesen und probiert das ganze zu implementieren.
hier meine 3 klassen.
Rfid_read oberservable
hier der observer das GUI
und die controller klasse
hmm scheint aber noch net korrekt zu sein.. was mache ich falsch??
gruss nibblas
ich möchte mein gui über änderungen der verarbeitenden klasse informieren.
dazu möchte ich die observer design pattern einsetzen.
ich habe mir die FAQ zu observer hier im forum gelesen und probiert das ganze zu implementieren.
hier meine 3 klassen.
Rfid_read oberservable
Code:
public class Rfid_read extends Observable {
private Timer Read = new Timer( 250, new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { try {
jReadTimer();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } } );
//Geräte beziehen
public String jReadTimer() throws SQLException
{
TMedioLx00BufferEntry myTag = new TMedioLx00BufferEntry(); //null;
boolean boContinue = false;
String taginfo = null;
int iMaxScans = 1;
// While there are tags in reader's buffer
while( iMaxScans-- != 0 )
{
try
{
boContinue = lx00Reader.getBufferEntry(
true, // Do not clear reader buffer after tag id extraction
myTag // MedioLx00Tag object
);
}
catch( TSTXeErrorException e )
{
Read.stop();
}
if( !boContinue )
break;
// System.out.println(myTag.getTagTypeAsString());
// System.out.println(myTag.getChannelAsString());
// System.out.println(myTag.getDataAsString());
Toolkit.getDefaultToolkit().beep();
taginfo = myTag.getDataAsString();
Read.stop();
}
setChanged();
notifyObservers(taginfo);
return taginfo;
}
//---------------------------------------------------------------
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
hier der observer das GUI
Code:
public class MatisseGui extends javax.swing.JFrame implements Observer {
private String rfidtag = null;
public MatisseGui() throws ClassNotFoundException, SQLException {
initComponents();
}
private void initComponents() {
//alle gui komponente
pack();
}// </editor-fold>
//GEN-END:initComponents
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new MatisseGui().setVisible(true);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
this.setRfidtag(arg.toString());
this.textDeviceid.setText(arg.toString());
}
}
und die controller klasse
Code:
public class GuiController {
/**
* @param args
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException, SQLException {
MatisseGui test = new MatisseGui();
Rfid_read read = new Rfid_read();
read.addObserver(test);
}
}
hmm scheint aber noch net korrekt zu sein.. was mache ich falsch??
gruss nibblas