Wie verlängere ich scala.swing?

8

Als Antwort auf eine vorherige Frage zum Erreichen eines bestimmten Effekts mit Swing Ich wurde zu JDesktopPane und JInternalFrame weitergeleitet. Leider scheint scala.swing keinen Wrapper für jede Klasse zu haben, also muss ich es erweitern.

Was muss ich wissen und tun, um minimal verwendbare Wrapper für diese Klassen zu erstellen, um mit und von scala.swing verwendet zu werden, und welche zusätzlichen Schritte würden Sie machen?

Bearbeiten:

Wie von jemandem vorgeschlagen, lassen Sie mich die Wirkung erklären, die ich erreichen möchte. Mein Programm kontrolliert (persönliche) Lottowetten. Also habe ich eine Reihe von verschiedenen Tickets, von denen jedes eine Reihe von verschiedenen Wetten und unterschiedliche Gültigkeiten haben kann.

Die Idee besteht darin, jedes dieser Tickets in einem separaten "Space" anzuzeigen, und die JInternalFrames scheinen genau das zu sein, was ich möchte und Leute neue Tickets erstellen lassen, sie aus Dateien laden, in Dateien speichern und allgemein überprüfen oder Bearbeiten der Informationen in jedem.

Außerdem muss ein Platz vorhanden sein, um die Lottoergebnisse anzuzeigen, und ich beabsichtige, das Programm weiterzuentwickeln, um die kollektiven Wetten kontrollieren zu können - wer hat mit wie viel dazu beigetragen, und wie sollte der Gewinn aufgeteilt werden? Ich habe die Schnittstelle dafür noch nicht berücksichtigt.

Bitte beachten Sie:

  • Ich kann die Java-Klassen nicht "nur benutzen" und trotzdem die Scala-Swing-Funktionen voll ausnutzen. Die Antworten in der vorherigen Frage sagen mir bereits, wie ich mit den Java-Klassen machen soll, was ich möchte, und das ist nicht das, was ich hier frage.

  • Den Quellcode vorhandener scala.swing-Klassen zu lesen, um zu lernen, wie es geht, ist die Arbeit, die ich mit dieser Frage zu vermeiden versuche.

Daniel C. Sobral 16.07.2009, 21:14
quelle

5 Antworten

3

Sie könnten Scalas "impliziten Konvertierungen" -Mechanismus in Betracht ziehen. Sie könnten so etwas tun:

%Vor%

Sie definieren jetzt eine Klasse RichJInternalFrame (), die einen JInternalFrame akzeptiert und über alle Methoden verfügt, die Sie JInternalFrame erweitern möchten, zB:

%Vor%

Dies erstellt eine neue Methode showThis, die nur auf dem JInternalFrame angezeigt wird. Sie könnten diese Methode jetzt auf einem JInternalFrame aufrufen:

%Vor%

Scala konvertiert jif automatisch in einen RichJInternalFrame und lässt Sie diese Methode aufrufen.

    
sanity 25.07.2009 14:31
quelle
0

Sie können alle Java-Bibliotheken direkt in Ihren Scala-Code importieren.

Versuchen Sie den Scala-Tutorial-Abschnitt: "Interaktion mit Java".

Java in Scala

    
Wolfslack 17.07.2009 04:48
quelle
0

Möglicherweise können Sie die Quelle scala.swing als Referenz verwenden, z. Zypern

    
thatismatt 17.07.2009 09:36
quelle
0

Welche Art von Skalafunktionen versuchen Sie damit zu verwenden? Das könnte helfen, eine Antwort zu finden. I.e. - Was willst du damit machen, möglicherweise in Java? Dann können wir versuchen, einen besseren Weg zu finden, es mit Scala zu machen und / oder einen Wrapper für die Klassen zu erstellen, der das, was du versuchst, noch einfacher machen würde.

    
Antony Stubbs 18.07.2009 06:39
quelle
0

In JRuby könnten Sie eine oder mehrere Eigenschaften in JDesktopPane oder JInternalFrame mischen, anstatt sie zu erweitern. Auf diese Weise müssten Sie die Klassen nicht umbrechen, sondern nur die vorhandenen Objekte verwenden. Soweit ich weiß, ist das mit Scala-Merkmalen nicht möglich.

Glücklicherweise gibt es eine Lösung, fast so flexibel wie die von Ruby: lexikalisch offene Klassen . Dieser Blogartikel gibt eine ausgezeichnete Einführung, IMHO.

    
bb. 25.07.2009 21:14
quelle