Hallo liebe Atnotes User,
Ich möchte einen Agenten in Java schreiben, der unter anderem ein JFrame benutzt und habe dabei mehrere Probleme.
Problem 1:Ich habe die Einsprungklasse&Methode die standardmäßig erzeugt wird, und erzeuge in ihr ein neues Objekt von einer selbstgeschriebenen Klasse, die JFrame erweitert. Dabei übergebe ich unter anderem den AgentContext. Im Konstruktor des JFrames ist der Kontext noch verfügbar (System.out.println(ac) zeigt mir != null). In einer Methode der Klasse, die bei einem Button-Aufruf ausgeführt wird ist der AgentContext jedoch leider wieder null.
Woran könnte das liegen?
Problem 2:Da der Agent ein eigener Thread ist, und das JFrame nicht in ihm läuft, läuft der Agent schon ab, obwohl das JFrame noch nicht geschlossen wurde. Das kann ich nur kontrollieren, indem ich im Agenten folgenden Code einfüge, was ich persönlich blöd finde:
while(!myframe.finished)
{
sleep(150);
}
Problem 3:Ich möchte, dass nachdem der Anwender auf einen Button im JFrame geklickt hat ein neues Document (Form = "test") erstellt wird, welches dann im UI geöffnet wird, damit der Anwender es bearbeiten kann. Java kann jedoch leider nicht auf das UI zugreifen. Deshalb passiert das mit einem LotusScript Agenten ("test3"). Dieser sieht folgendermaßen aus:
Sub Initialize
Dim ses As New NotesSession
Dim doc As NotesDocument
Dim uiws As New NotesUIWorkspace
Set doc = ses.Currentdatabase.Createdocument()
Call doc.Replaceitemvalue("Form","test")
Call uiws.Editdocument(True,doc)
End Sub
Dieser Agent funktioniert, wenn ich ihn aus einer View über einen Button ausführe.
Wenn in der View jedoch für den ersten (Java)Agenten ein Button ist, der nach einem Klick auf den Button im JFrame den Test3-Agenten ausführt, dann
öffnet sich zwar ein neues Document, das wird aber fehlerhaft im UI angezeigt. (Es sieht aus, als wäre die View auf die Form gescreenshottet). Ich kann das Document dann auch nicht speichern, oder mir seine Eigenschaften anschauen.
Problem 4:Das ist nichts gravierendes.
Im JFrame wird im Konstruktor ein JButton erzeugt. Dieser wird mit setSize(100,100) auf 100x100 gesetzt und mit setLocation(200,200) an eine Position gesetzt. Trotzdem füllt mir der Button das gesamte JFrame aus. (Location 0,0 und Size 800,600)
Ich hoffe ich habe mich verständlich ausgedrückt. Falls es noch Fragen gibt, dann beantworte ich diese gerne.
Danke für die Hilfe und Gruß
Loki