Funktion eines JButton in einen Vektor verlagern

fast35

Mitglied
Hallo zusammen,

ich habe folgendes Problem:
- Ich habe mehrere Ein- und Ausschalt-Button die eig immer das gleiche machen und möchte die Funktion z.B. eines JButton in einen Vektor verlagern, also immer wenn ich die Ein-Taste betätige soll es vom Vektor die genau Funktion finden und übergeben.

1. Ist sowas überhaupt möglich? Wenn, ja, wie?
2. Wie ist es mit Verlagerung in eine Datenbank, ist sowas generell möglich?

Mein Ziel ist es meine Klassen und meine Code-Zeilen zu reduzieren.

Java:
private JButton getBtnRelay1() {
		if (btnRelay1 == null) {
			btnRelay1 = new JButton("Ein");
			btnRelay1.setFont(new Font("Tahoma", Font.PLAIN, 8));
			btnRelay1.addActionListener(new ActionListener (){
				public void actionPerformed(ActionEvent arg0) {
					Serielle kommPort1 = new Serielle();
					kommPort1.openCOMBOARD(JComboBox_RelayBoard.getSelectedItem().toString());
					
					
					kommPort1.initRelayBoard();
					
					boolean b = true;
					kommPort1.setRelay(1,b);
					kommPort1.close();
				}
			});
			btnRelay1.setBounds(28, 73, 50, 23);
		}
		return btnRelay1;
	}

Ich freu mich für eure Antworten. Danke :)
 

turtle

Top Contributor
Ich verstehe das Problem nicht richtig.

Ist sowas überhaupt möglich? Wenn, ja, wie?

Wenn du meinst, das du den Code zu Buttons nur einmal schreiben möchtest, lautet die Antwort: Ja.

Der Listener, also der Code, der aufgerufen wird, wenn auf den Button geklickt wird, ist ja auch "nur" eine Klasse:
Java:
new ActionListener (){
                public void actionPerformed(ActionEvent arg0) {
                    Serielle kommPort1 = new Serielle();
                    kommPort1.openCOMBOARD(JComboBox_RelayBoard.getSelectedItem().toString());
                    
                    
                    kommPort1.initRelayBoard();
                    
                    boolean b = true;
                    kommPort1.setRelay(1,b);
                    kommPort1.close();
                }
            }
Also, kannst du eine Instanz dieser Klasse anlegen und für einen Button über addActionListener() registrieren.

Du kannst alles auch mit mehreren Buttons machen und im ActionEvent abfragen, welcher Button der Auslöser war.

Somit kannst du auch eine Funktion schreiben, die nach einem gewissen Kriterium (alle Ein-Buttons) mit dem entsprechenden ActionListener "verdrahtest".

Wie ist es mit Verlagerung in eine Datenbank, ist sowas generell möglich?
Da das Reagieren auf einen Button ja Java-Code erfordert, ist eine Verlagerung in eine DB nicht möglich.

Wenn ich dich aber falsch verstanden habe, ignorier diese Antwort:oops:
 
Zuletzt bearbeitet:

fast35

Mitglied
Hallo turtle,

Du hast es richtig verstanden, ich möchte für mehrere
Buttons nur einmal den Code schreiben. Ich habe zuviele
Zeilen an code, die ich reduzieren möchte.
Das hört sich alles schon gut an, aber es gibt noch ein Problem.
Z.B. Mein Button getBtnRelay1 schaltet auf einer Platine Relais Nr.1 ein.
Button2-Relais2,..Button6-Relais6.
Also, muss ich eine Instanz anlegen und für jeden Button addActionListenen() registrieren.
Das alles in eine Funktion und dort wird festgelegt, durch ActionEvent, Button 3 wurde gedrückt, schicke ActionListener() für Button3, Schalte Relais3 ein.
Habe ich das richtig verstanden?
 
Zuletzt bearbeitet:

Sen-Mithrarin

Gesperrter Benutzer
nein .. da hast du was nicht ganz verstanden

du willst code nur genau ein mal schreiben
die antwort : ja, genau das geht auch
und es geht sogar noch weiter : du brauchst dafür auch sogar nur ein objekt ... musst also nur einmal NEW schreiben

du hast jetzt noch den denkfehler das du von deinem aktuellen code ausgehst und glaubst du müsstest für jedes relais extra code schreiben

man kann das ganze aber sehr eleganz lösen

setActionCommand(String)

hier kannst du nötige parameter für jeden button einzeln vergeben die dann im event ausgelesen werden können


am ende hast du also z.b. sowas


JButton button1=new JButton();
button1.setActionCommand("1/on");
button1.addActionListener(listenerInstance);
JButton button2=new JButton();
button2.setActionCommand("2/on");
button2.addActionListener(listenerInstance);
// ...

und im listener dann sowas

String command=actionEvent.getActionCommand();
int relay=Integer.parseInt(command.split("/")[0]);
boolean on="on".equalsIgnoreCase(command.split("/")[1]) ? true : false;

setRelay(relay, on);


klar geht das ganze noch kürzer mit nem loop ... dann spart man sich die haufen button-variablen ... aber nicht alles auf einmal =D
(heißt also : man könnte das wofür du sicher über die hälfte deiner code-zeilen "verschwendest" sauber in 5 bis 10 zeilen packen und es würde immer noch genau so funktionieren wie jetzt ... nur halt deutlich "aufgeräumter")


zu Vektor : du solltest lieber ArrayList statt Vektor nutzen ...
sie machen zwar am ende das gleiche ... aber eben nicht 100% das selbe ...
google liefert dazu sehr ausführliche informationen warum ArrayList einem Vektor immer vorzuziehen ist
 

fast35

Mitglied
Danke euch, hat mir sehr weitergeholfen :toll:
Jetzt muss ich alles noch umsetzen, dann passt alles.

Später mit einem loop muss ich mir noch anschauen, wie gesagt
erstmal das und code-zeilen reduzieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
S Funktion eines Stacks Java Basics - Anfänger-Themen 4
C Automatisches Ausfuehren einer Funktion beim Laden eines Jar files Java Basics - Anfänger-Themen 3
D Casten eines Objekts: Funktion der Oberklasse aufrufen Java Basics - Anfänger-Themen 4
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
I Generische Funktion Java Basics - Anfänger-Themen 3
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
M toDouble Funktion Java Basics - Anfänger-Themen 3
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
X Ackermannsche Funktion Java Basics - Anfänger-Themen 32
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
B Funktion mit mehreren Rückgabewerten aka Prozeduren? Java Basics - Anfänger-Themen 12
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
D Funktion nur 1 Rueckgabewert Java Basics - Anfänger-Themen 9
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
R Ackermann Funktion Java Basics - Anfänger-Themen 2
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
E Contain-funktion überlisten Java Basics - Anfänger-Themen 4
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
S Funktion in Klasse auslagern Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
D Nullstellen einer Funktion 3. Grades mit Horner Schema Java Basics - Anfänger-Themen 6
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
B Zugriffe in einer Klasse / Funktion Java Basics - Anfänger-Themen 9
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
T Lambda-Funktion bei Binärbäumen Java Basics - Anfänger-Themen 13
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
S Threads run - Funktion wird nur einmal ausgeführt. Java Basics - Anfänger-Themen 8
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
R If Funktion funktioniert nicht :P Java Basics - Anfänger-Themen 3
H Funktion in Hintergrund und Vordergrund ausführen Java Basics - Anfänger-Themen 11
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
T Klassen Funktion in einem Funktionsaufruf definieren Java Basics - Anfänger-Themen 3
X Eval-Funktion mit Variable Java Basics - Anfänger-Themen 2
T Screenreader Funktion Java Basics - Anfänger-Themen 2
S Wertetabelle einer Funktion f : R -> R Java Basics - Anfänger-Themen 1
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
C Meine erste Funktion Java Basics - Anfänger-Themen 12
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
M Interface als Konstruktorparameter nutzen, um Funktion zu plotten Java Basics - Anfänger-Themen 14
NR_EIGHT Benutzereingabe in Funktion verpacken Java Basics - Anfänger-Themen 4
J Funktion definieren und ausfuehren Java Basics - Anfänger-Themen 27
D Loop Funktion für Robot Klasse Java Basics - Anfänger-Themen 5
N mathematische Funktion Java Basics - Anfänger-Themen 29
R Programm verstehen, Funktion Java Basics - Anfänger-Themen 4
O Nicht Standard Form boolesche Funktion in Standard Form parsen Java Basics - Anfänger-Themen 3
F Sleep Funktion Java Basics - Anfänger-Themen 12
S Euklid Funktion Java Basics - Anfänger-Themen 8
H Funktion mit Argumenten Java Basics - Anfänger-Themen 5
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
O Probleme mit der repaint-Funktion Java Basics - Anfänger-Themen 6
F Eine Frage über paint() Funktion Java Basics - Anfänger-Themen 2
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
C Probleme mit replaceAll Funktion Java Basics - Anfänger-Themen 9
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben