schwierige Button
-
hi
ich brauch mal wieder was ganz außergewöhnliches.vereinfachte erklärung:
ich habe 2 Button. wenn ich einen von beiden anklicke, soll der jeweils andere auch als gedrückt erscheinen. ich spiele grad mit so ziemlich allem rum ohne erfolg. setSelect funzt nich. wie könnte ich das realisieren ??? kann man die Button nicht irgendwie kapseln, also als ein objekt behandeln ?
und noch eine frage. insgesamt hat das prog 87 Button. ich habe schon eine aufteilung in 5 klassen, sodas ich pro klasse ca 18 Button habe. trotzdem ist das mit dem Actionlistener dann immer noch schwierig zu verwalten. 18 mal else if ist nicht gerade guter style. bisher habe ich die Actionlistener pro klasse implementiert (über das interface). wie könnte ich das vereinfachen ? am liebsten wäre mir eine eigene klasse dafür, aber 87 else if töten java.
ich hoffe das war soweit verständlich.danke im vorraus
pain
-
Zu deiner ersten Frage weiss ich leider noch keine Antwort aber auf die zweite Frage kann ich dir nur sagen, dass es nur noch eine Möglichkeit gibt. Jeder Button bekommt ein eigenes actionPerformed. Damit hättest Du die if-else komplett ausradiert aber eben 87 kleine, anonyme Klassen.
[java]JButton btn1 = new JButton("btn1");
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent aevt) {
// Hier die Logik
}
});[/code]Nachtrag: Habs gerade gesehen. Die Klasse JButton besitzt (direkt oder indirekt weiss ich nicht mehr) Methoden die doClick() heissen. Damit könntest Du einen Klick auf einen Button simulieren.
[ Dieser Beitrag wurde am 08.01.2003 um 11:16 Uhr von CengizS editiert. ]
-
doClick() is super, genau das wollte ich. hab jetz nur wieder diese winzige prob mit dem actionlistener. der feuert erst nachdem ich geklickt und wieder losgelassen habe.kann man da was biegen oder muss ich nen anderen Listener nehmen ?
das mit den 87 listenern hat ich auch schon erwögen.aber is das nich böse gefaket ? ich fange langsam an in OOP/Java zu denken und will mich soweit es geht an die konventionen halten. ich such halt ne möglichkeit die so gut es geht sauber is. wie wird das eigentlich bei großen projekten gemacht ? da gibts doch bestimt hunderte Elemente, wie werden die verwaltet ? ich schau mal
tausend dank erstmal, hast wieder mal viel arbeit erspartpain
-
Um eine gewisse Gleichzeitigkeit zu erreichen solltest du dir über MouseListener bzw. MouseMotionListener ein wenig was durchlesen. Damit gehts dann 100%-ig.
-
naja, das mit dem klicken vielleicht. aber beide buttons 100 % synchron wird wohl nix. bei dem doClick() kann man eine Zeit in ms für das gedrück lassen angeben. ja dummerweise steht die aber erst zur laufzeit fest, naja, so pinglich bin ich dann doch noch nicht
das mit dem MouseListener hat ich schon fast vermutet.hab mit dem leider noch nie gearbeitet, also wirds zeit dankt dirpain
-
letzte frage: kann ich es irgendwie umgehen das ich alle interfaces der mouselistener implementieren muss ? danke
pain
-
wie bei den meisten Listener, bei denen viele Methoden zu implementieren sind, gibts auch für das MouseListener-Interface eine MouseAdapter-Klasse.
Davon kannst du eine Anonymeklasse erzeugen und brauchst nur die Methoden überschreiben, die du benötigst.Beispiel:
button1.addMouseListener(new MouseAdapter(){ });
[ Dieser Beitrag wurde am 08.01.2003 um 12:40 Uhr von Ingo aka Desert Hawk editiert. ]
-
dies is ja einfach.cool.danke
pain