javafx button array frage?
wie kann ich bei einem Buttonarray aus 100 Buttons (Fragt nicht warum ich so viele brauche, ich brauch es einfach) es so machen, dass wenn ich einen Button drücke, dann ausgegeben wird, der wie vielte Button das aus dem Array ist? (also ich drücke den 50en Button und es wird dann "50" ausgegeben!)
Bitte NUR antworten auf die frage, wenn ihr vorhabt, was zu schreiben, was nicht eine direkte Antwort auf die frage ist, dann schreibt einfach gar nichts, ansonsten melde ich die Antwort!
Bitte mit Quellcode-Beispiel schicken!
1 Antwort
Mit einem normalem for Loop über den Array gehen und jedes Mal testen ob der Button der jetzigen Position im Array entspricht, dann ausgeben.
Du kannst auch in den Text die Zahl einbringen oder die Button Klasse erweitern und eine neue Variable für die Position im Array hinzufügen, beides würde die Performance enorm verbessern.
Wenn du trotzdem bei der Methode bleiben willst, kannst du auch einfach ein Liste verwenden, da gibt es die indexOf Methode. (Eine Map kann man auch verwenden, und den Buttons darüber eine Nummer zuweisen, wäre auch performanter)
achso... ja hatte irgendeine "denkblockade". Danke dir, hast mir damit sehr weiter geholfen! :)
Nun, du erstellst eine neue Klasse, die einen EventHandler vom Typ ActionEvent erweitert, dieser gibst du einen Konstruktor, welcher eine int annimmt und als Objektvariable speichert. Wird die onAction Methode ausgeführt, hat man dann Zugriff auf die Methode. In Loop kann man dann einfach (je nach dem wie die Klasse heißt) new CustomHandler(i) machen.
das verwirrt mich irgendwie gerade xD kannst du vielleicht eben ein codebeispiel schicken? ich bin gerade irgendwie verwirrt xD
Meinst du so? (weil das funzt bei mir irgendwie nicht :C):
for(int i = 0; i<100; i++){
kästchen[i].setOnAction(new EventHandler(){
public void handle(ActionEvent event1){
instanz.Methode(i);
}
});
}
Aber habe keinen zugriff auf "i"... :C
Ja so würde es auch gehen, du musst eben die int in dem EventHandler speichern, das geht mit einer anonymen Klasse so nicht, du musst sie extra definieren (am besten in der selben Datei außerhalb der Klassenklammern).
wie meinst du das? :/ Ich verstehe nicht ganz, was du meinst (Danke für die schnelle Antwort! Morgen mach ich dich hilfr. antwort)
http://hastebin.com/faviliwuxi.java