Methode bei Boolean change neu Ausführen

Zakon

Bekanntes Mitglied
Hallo zusammen, :)

Beim öffnen des Programms sind die Werte in einer Tabelle noch nicht definiert. Neben mir habe ich ein NFC Card reader der mit derr javax.smartcardio Librarie läuft.
In dieser Librarie gibt es eine Methode für das CardTerminal ("isCardPresent"). Diese gibt ein True oder False zurück, je nachdem ob eine Karte aufgelegt ist oder nicht.
Meine Frage:
Ist es möglich die Methode, die meine Tabelle befüllt immer neu Auszuführen wenn eine Karte auf das Terminal gelegt wird?

[CODE lang="java" highlight="8"]public void fillData() {
ModelToController modelToController = new ModelToController();
ChipData chipData = new ChipData();

terminal = chipData.getTerminal();

customerData = modelToController.transferCustomerData(chipData.getChipRFID(terminal));
if(terminal.isCardPresent()) {
customerID.setText(customerData.get("ID").toString());
customerLastName.setText(customerData.get("LastName").toString());
customerName.setText(customerData.get("Name").toString());
customerCity.setText(customerData.get("City").toString());
}
//TODO
//Age, Country...
}[/CODE]

In zeile 8 das Statement was den true/false Wert zurück gibt. (An der stelle kein wirklichen Sinn. Der Vollständigkeit jedoch hier reingeschrieben.)
Die fillData() Methode soll jedes mal neu ausgeführt werden wenn sich die Card ändert.

Danke im Vorraus. :)
 

LimDul

Top Contributor
Grundsätzlich ist das das klassische Observable Pattern: https://de.wikipedia.org/wiki/Beobachter_(Entwurfsmuster)

Das heißt, im Idealfall registriert man einen Listener am Terminal, der informiert wird, wenn eine Karte da ist und kann darüber das dann entsprechend ausführen. Analog wie z.B. ein ActionListener auf einen Button Druck reagiert. Dafür müsste die Bibliothek aber sowas bereitstellen, da bietet es sich an die Doku bzw. API-Doku zu lesen ob es da z.B. addXXXListener Methoden gibt.

Wenn die Bibliothek es nicht gibt, sehe ich als einzige Möglichkeit einen Thread (hier vermutlich TimerTask) zu starten, der regelmäßig das prüft und dann den Code ausführt. Wie regelmäßig muss man ausprobieren, zu oft belastet vermutlich die Anwendung zu viel.
 

Zakon

Bekanntes Mitglied
Ok danke dir. Ich lese mich nochmal in die API-Doku ein. Hoffe da gibt es sowas.

Könnte ich mir nich im Notfall dann auch selber so ein Listener bauen?
 

LimDul

Top Contributor
Ok danke dir. Ich lese mich nochmal in die API-Doku ein. Hoffe da gibt es sowas.

Könnte ich mir nich im Notfall dann auch selber so ein Listener bauen?
Das ist ja im Prinzip die zweite Möglichkeit. Die ist halt nur performance-lastiger, weil sie aktiv pollt, anstelle per push benachrichtigt zu werden
 

Zakon

Bekanntes Mitglied
Ah ok verstehe. Danke dir ich mach mich mal schlau und schreibe gegebenfalls nochmal, wenn ich ein Weg gefunden (bzw. entschieden) habe.
 

Zakon

Bekanntes Mitglied
@mihe7
Danke für deine Antowrt. Ich bin leider mitten in der Klausurphase und hatte deswegen nicht so viel Zeit. :)
Die Methode "waitForCardPresent" ist doch aber auch nur eine Methode die ein true oder false zurück gibt. Kann ich mir daraus ein Listener bauen der aktiviert wird wenn diese Methode ein true zurück gibt?
 
K

kneitzel

Gast
Nein, Du kannst keinen Listener bauen, denn das ist nichts asynchrones sondern ein synchroner Aufruf, der so lange blockiert, bis eine Karte da ist oder es auf einen Timeout gelaufen ist.

Wenn Du ein Event haben willst, dann kannst Du also in einem Thread in einer Schleife so lange die Methode aufrufen, bis die Methode true ausgibt. Und dann kannst Du ein Event auslösen oder sonst irgendwas machen.
 

Zakon

Bekanntes Mitglied
Ok alles klar danke dir. Ich setzte mich heut abend mal dran und poste wie immer meine lösung wenn ich zu einer gekommen bin. :)
 

Zakon

Bekanntes Mitglied
Ich hatte heute mal ein wenig Zeit und bin auch zu einer funktionierenden Lösung gekommen. Falls es jemand brauch so sieht das ganze aus.
Wichtig hier der sleep timer, da sonst der thread losgelaufen ist und die Methode mir tausende Connections zum Terminal hergestellt hat.
[CODE lang="java" highlight="26"]Thread thread = new Thread(){
@Override
public void run() {
while (!thread.isInterrupted()) {
try {
checkCardPresent();
} catch (CardException e) {
e.printStackTrace();
}
}
try {
checkCardPresent();
} catch (CardException e) {
e.printStackTrace();
}
}
};

public void checkCardPresent() throws CardException {
ModelToController modelToController= new ModelToController();
CardTerminal terminal = modelToController.transferCardTerminal();

while (terminal.waitForCardPresent(10)){
fillData(terminal);
try {
sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}[/CODE]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing Was macht die Methode "setDataProviderCreditShown(boolean b)" AWT, Swing, JavaFX & SWT 4
E JComboBox Methode setItemEnabeld(boolean) AWT, Swing, JavaFX & SWT 6
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
M passende Reflexion-Methode?? AWT, Swing, JavaFX & SWT 1
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
M Swing Methode datenLesen() greift auf catchBlock zu? AWT, Swing, JavaFX & SWT 25
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
H Event Handling Thread - Abruf der get-Methode AWT, Swing, JavaFX & SWT 5
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
J Rekursive Methode JProgressBar AWT, Swing, JavaFX & SWT 4
A Methode pausieren bis anderes Ereignis ausgeführt AWT, Swing, JavaFX & SWT 2
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Brauche Erklärung von Methode AWT, Swing, JavaFX & SWT 1
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
I Methode Draw3DRect und DrawRect AWT, Swing, JavaFX & SWT 2
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
K Methode repaint() AWT, Swing, JavaFX & SWT 1
A Methode in bestimmten Intervall ausführen AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
Q AWT Methodenaufruf aus actionPerformed-Methode AWT, Swing, JavaFX & SWT 4
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
P keyTyped-Methode AWT, Swing, JavaFX & SWT 1
D JavaFX Java Methoden mit JavaFX Methode kommunizieren lassen? AWT, Swing, JavaFX & SWT 3
M JavaFX Methode nach initialize() aufrufen AWT, Swing, JavaFX & SWT 6
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
K Swing Durch Methode erzeugte Buttons ansteuern AWT, Swing, JavaFX & SWT 5
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
S PaintIn - Methode AWT, Swing, JavaFX & SWT 1
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
K Kann nicht auf GUI Elemente zugreifen, mit einer Methode im Controller klappts, mit der anderen nich AWT, Swing, JavaFX & SWT 10
D JavaFX Interface Initializable - Was machen die Parameter in der Methode inizializeable() ? AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
S Swing Mit einem Link eine Methode aufrufen AWT, Swing, JavaFX & SWT 2
P Swing Auf Methode zugreifen (am Schlauch steh) AWT, Swing, JavaFX & SWT 5
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
D Swing DefaultTableModel setValueAt Methode AWT, Swing, JavaFX & SWT 7
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
T Swing JPanel - "Open" Methode? AWT, Swing, JavaFX & SWT 6
P Swing actionPerformed()-Methode funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Applet Bricht Methode zwischendruch ab AWT, Swing, JavaFX & SWT 11
K Per Textfield Methode ausführen AWT, Swing, JavaFX & SWT 6
J Swing JTable - nach Sortieren andere Methode aufrufen AWT, Swing, JavaFX & SWT 2
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable's valueChanged Methode überschreiben AWT, Swing, JavaFX & SWT 2
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
N Methode zum Prüfen ob Jtextfield verändert worden ist AWT, Swing, JavaFX & SWT 2
K beim Schließen des JFrames, Methode aufrufen AWT, Swing, JavaFX & SWT 3
J AWT Methode paint() AWT, Swing, JavaFX & SWT 4
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
E Umgang mit der Update Methode AWT, Swing, JavaFX & SWT 38
D Applet Methode in Timer einbinden AWT, Swing, JavaFX & SWT 6
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
P Swing JPanel über Methode setzen AWT, Swing, JavaFX & SWT 2
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
T Swing setText()-Methode Funktioniert nicht AWT, Swing, JavaFX & SWT 7
L JLabel Methode setText funktioniert nicht AWT, Swing, JavaFX & SWT 5
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
S Visual Editor mit main Methode AWT, Swing, JavaFX & SWT 3
G paint-Methode kopiert GUI AWT, Swing, JavaFX & SWT 14
F Swing JFrame Methode beim Schließen aufrufen AWT, Swing, JavaFX & SWT 5
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
H applet Methode aus abstrakter Klasse aufrufen AWT, Swing, JavaFX & SWT 12
S Methode fireTableDataChanged() AWT, Swing, JavaFX & SWT 2
Y Swing Problem mit Main Methode AWT, Swing, JavaFX & SWT 8
E 2D-Grafik Zeichnen außerhalb der "paintComponent"-Methode? AWT, Swing, JavaFX & SWT 5
R Run Methode Probleme AWT, Swing, JavaFX & SWT 2
B Methode setzt nicht das Layout in einer if-Abfrage AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben