.
|
|
| Autor | Beitrag |
|---|---|
|
000 12.10.2005, 01:20 doener |
Ich hasse Java. Wie rufe ich eine "Methode" mit nem Button UND einfach so auf? Zurzeit steht da: public void resetActionPerformed (ActionEvent evt) Wenn ich nen Button klicke wird das aufgeführt. Jetzt will ich das aber nicht nur mit dem Button aufrufen, sondern auch direkt irgendwo anders, also ungefähr so: resetActionPerformed(); Wie geht das??? -- |
|
Profil || Suche |
|
001 12.10.2005, 01:23 theDon |
\o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|
002 12.10.2005, 01:36 KhanRKerensky |
Ich hab zwar nicht wirklich ne Ahnung von Java, aber es gäbe da zwei Ansätze. /edit "[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book Dieser Beitrag wurde am 12.10.2005 um 01:38 von KhanRKerensky bearbeitet. |
|
Profil || Suche |
|
003 12.10.2005, 01:45 doener |
Dieser Beitrag wurde am 12.10.2005 um 01:59 von doener bearbeitet. |
|
Profil || Suche |
|
004 12.10.2005, 03:03 theDon |
`instance' ist natuerlich eine Instanzvariable eines Typs, der resetActionPerformed() implementiert. Vermutlich ist das bei ActionListener der Fall. So wie ich das sehe, konstruirst du da einen anonymen Typen, der von ActionListener erbt. Dieser wird direkt instanziert und an addActionListener() uebergeben. Damit hast du allerdings keine explizite Instanzvariable, ueber die du resetActionPerformed() aufrufen koenntest. Im Zweifelsfall ist das eh protected, von daher haette sich das direkt erledigt. Ich bin jetzt aber zu faul, das nachzugucken. Falls nicht, koennte das so funktionieren:
\o tanz den naziprau! o/ And more than ever, I hope to never fall, Dieser Beitrag wurde am 12.10.2005 um 03:03 von theDon bearbeitet. |
|
Profil || Suche |
|
005 12.10.2005, 12:16 Kriz |
Es gibt noch andere Möglichkeiten, Events zu behandeln (damit meine ich nicht das ursprüngliche, beknackte Eventmodell von Java 1.0). So kann man auch direkt in einer abgeleiteten Klasse von Button auf alle möglichen Events direkt reagieren und dann diese an übergeordnete EventListener durchschleifen. Aber das glaube ich ist nicht das, wonach du suchst, oder? --K:R-I)Z++ |
|
Profil || Suche |
|
006 13.10.2005, 15:59 doener |
Erstmal Danke für die ganzen Vorschläge, das meiste davon versteh ich zwar net wirklich, aber: Das, was dein Prog macht, sieht doch im Wesentlichen wie folgt aus: Dieser Beitrag wurde am 13.10.2005 um 16:06 von doener bearbeitet. |
|
Profil || Suche |
|
007 13.10.2005, 17:48 Kriz |
Nein. Nicht direkt. Und btw. ist deine Syntax da oben JavaScript like und das beißt sich gewaltig mit Java. Was du machen kannst ist einen Buttonklick simulieren, indem die Methode b.doClick() aufgerufen wird. Aber wie auch immer, du mußt den ActionListener _immer_ konkretisieren durch performAction(ActionEvent)! Schau dir erstmal das Eventmodell von Java an, dann wirst du sehen, daß meine Lösung korrekt ist. www.javabuch.de K:R-I)Z++ |
|
Profil || Suche |
|
008 13.10.2005, 20:32 doener |
Bestreite ich auch garnicht, hab nur gedacht das geht einfacher... Dieser Beitrag wurde am 13.10.2005 um 20:33 von doener bearbeitet. |
|
Profil || Suche |
|
009 16.10.2005, 15:56 doener |
Was ist der Unterschied zwischen: zahl = Integer.valueOf(einstring).intValue(); ??? |
|
Profil || Suche |
|
010 16.10.2005, 16:43 CN |
evtl mal googlen? auf die idee kommst du nich oder wie .. da stehts: |
|
Profil || Suche |
|
011 16.10.2005, 17:05 doener |
Ich mache seit über zwei Stunden nichts anderes als die API-Referenz durchzugehen... ich kann daraus nur immer wieder entnehmen, dass die Schreibweise "Integer.valueOf(einstring).intValue();" total unsinnig ist, dass die ganze Methode "intValue()" auf ein Integer Objekt angewandt unsinnig ist. Und anscheinend wird das trotzdem gemacht: |
|
Profil || Suche |
|
012 16.10.2005, 17:25 theDon |
Integer ist eine Klasse. \o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|
013 16.10.2005, 17:45 HammerBlade |
Das glaube ich dir nicht. Ausserdem hast du verschwiegen was zahl für einen Typ hat (int oder Interger). Egal welchen Typ es hat (int oder Interger) eine der beiden Version (mit oder ohne intValue()) wird eine Fehler beim Compilieren erzeugen. Compilier mal bitte das hier: "Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 16.10.2005 um 17:45 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
014 17.10.2005, 01:16 doener |
Hab zu Anschauungszwecken was neutrales ergänzt: Eine Variable vom Typ Integer ist ein Zahlentyp, ist klar, was ist ein "int"? Ich hab gedacht das wär ne Abkürzung für Integer?! Ich hab in meinem Programm Zahlen-Variablen immer mit "int zahl2 = 4;" etc. deklariert, hab gedacht damit mache ich Integer-Variablen, bisher verhalten sie sich auch genau so (kann keine Kommazahl sein, typische Länge etc.). -- |
|
Profil || Suche |
|
015 17.10.2005, 09:28 hausi |
int ist der primitive Typ, der nur die Zahl beinhaltet. Integer ist die Klasse dazu, die alles mögliche an Manipulations- unf Konvertierungs-Methoden hat. |
|
Profil || Suche |
|
016 17.10.2005, 10:40 Kriz |
Primitive wie int sind in Java immer serialisierbar, da brauch man kein Integer als Wrapper (außer man deklariert sie als 'transient'). Früher wurden die Primitivwrapper genutzt, um Konvertierungen zu machen wie float nach String oder so. Heute braucht man sie zwingend für den Einsatz in den Templates von Java 5, da Java nur Klassenobjekte als generische Datentypen akzeptiert und Primitive davon ausgeschlossen sind. Wer also ein int in einer Liste nach Java 5 speichern will, der muß Integer als Objekt angeben. Das dynamische Autocasting sollte dann automatisch ein int nach Integer wandeln bzw. ein Integer nach int (ich würde mich aber nicht darauf verlassen). PS: Was für eine IDE ist das? Kostenlos? --K:R-I)Z++ Dieser Beitrag wurde am 17.10.2005 um 10:41 von Kriz bearbeitet. |
|
Profil || Suche |
|
017 17.10.2005, 11:36 HammerBlade |
Ich verstehe nicht warum das bei doener so vom Compiler geschluckt wird. Ich bekomme eine Incompatible-Types-Fehler, wie ich auch erwartet hatte. Auch mein JDK unterscheidet sich nur in der Subversion: JDK 1.5.0_02. Was verstehst du unter "dynamische Autocasting"? Soll das Coercion (impliziter Cast, z.B. von float auf int: int n = 5; float f = n;) sein? Oder soll das so laufen wie mit toString()? -- "Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 17.10.2005 um 11:39 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
018 17.10.2005, 11:37 CN |
steht doch da :P java-editor |
|
Profil || Suche |
|
019 17.10.2005, 13:01 Kriz |
Das ist ein neues Feature von Java 5, speziell für die Nummernwrapper gedacht. Der Interpreter erkennt automatisch bei einer Parameterliste, ob der Typ primitiv ist oder ein Wrapper. Wenn also ein Primitivtyp erwartet wird (int, double, usw.) und man übergibt stattdessen einen Wrapper (Integer, Double, usw.), dann castet Java den Wrapper automatisch in den passenden Primitivtyp um. Andersherum genauso. Leider hat das Autocasting auch seine Schwächen, weshalb ich nicht so recht davon überzeugt bin. @CN: Hm, ich suche immer eine halbwegs gute Java IDE. Seit jeher arbeite ich mit Kawa Pro, an Eclipse taste ich mich gerade ran. Wenn das Ding da was taugt, dann schnupper ich da auch mal rein, da Kawa Pro dummerweise immer an die aktuelle Java VM gebunden war (d.h. bei 1.3 wurde die Entwicklung gestoppt o_O). Mit ein paar Tricks kann man aber durchaus auch Java 5 damit coden. Nur solche Dinge wie IntelliSense usw. bleiben infolge der 1.3er Codedefinition auf dem Stand von 1.3 stehen. Das prickelt nicht so dolle... Und der Debugger erwartet dummerweise eine 1.3er DLL, die ich aber nicht mehr habe, daher läuft nur noch der JDB, alles andere versagt. (brummel) --K:R-I)Z++ Dieser Beitrag wurde am 17.10.2005 um 13:03 von Kriz bearbeitet. |
|
Profil || Suche |
|
020 17.10.2005, 13:31 HammerBlade |
Dynamische Autocasting läuft also so wie toString(). Nur warum geht das dann bei doener und bei mir nicht? Mal auf 1.5.0_05 updaten. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon |
|
Profil || Suche |
|
021 17.10.2005, 13:53 doener |
Also ist die Antwort auf meine Frage: zahl = Integer.valueOf(einstring).intValue(); ist beides möglich, da sich kürzlich seit einer Java-Version irgendwas geändert hat? -- |
|
Profil || Suche |
|
022 17.10.2005, 13:59 HammerBlade |
Mit JDK 1.5.0_05 kann ich das jetzt auch fehlerfrei compilieren. mit JDK 1.5.0_02 ging es nicht. Es ist wohl ab JDK 1.5.0_05 beides möglich. Ich würde aber
"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 17.10.2005 um 13:59 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
023 17.10.2005, 15:21 Kriz |
Davon rede ich doch die ganze Zeit. Das ist Autocasting live. Integer.valueOf("10") produziert ein int mit dem Wert 10. Es stünde also da: int zahl = 10.intValue(); Nun kommt Autocasting und erkennt, daß eine aus Integer bekannte Methode ( intValue() ) auf ein Primitiv angewendet werden soll. Folglich casted der Interpreter (bzw. hat der Compiler evtl. schon vorher gebytecodet) die Zahl 10 intern um in Integer(10), worauf er wieder durch intValue() die Zahl 10 ausspuckt. Daher ist es _nicht_ ratsam, dieses Konstrukt zu wählen, da es auf die Laufzeit geht. Das Endergebnis ist sowieso dasselbe und der Ausdruck Integer.valueOf(String) ist sowieso der gebräuchlichere. Leider hat das Autocasting auch seine Schwächen, weshalb ich nicht so recht davon überzeugt bin. SUN gibt selber zu, daß Autocasting eher Beta als Stable ist. Eventuell wird das ja mit 1.6 besser... -- K:R-I)Z++ |
|
Profil || Suche |
|
024 17.10.2005, 16:05 theDon |
Wo bitte ist Integer.valueOf("10") ein int? -- \o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|


