Bei Button-klick neuen button in array hinzufügen

waeve

Mitglied
Hallo,

ich habe einen Button und dieser soll mir beim draufklicken neue buttons erzeugen und diese in einem Array speichern.
Der Listener den ich dafür brauche, soll in einer anderen Klasse sein.
Und ich bin völlig verzweifelt ;(

Der Button liegt auf nem Panel mit einem BoxLayout, falls das wichtig ist.
Die Klasse, inwelcher der Listener sein soll heißt ListenerNeu.

Java:
JButton neuer = new JButton ("Neuer Button");
        ListenerNeu ln = new ListenerNeu();
        neuer.addMouseListener((MouseListener) ln);  //ActionListener fürs erzeugen
        this.add(neuer);
        
        this.add(Box.createRigidArea(new Dimension(10, 20)));
        
        JButton[] buttonArray = new JButton[25];
        String [] arbeiten = new String [25];

Naja die Klasse ListenerNeu existiert noch nicht richtig da ich keine ahnung hab was da rein soll.
Ich habe an eine for schleife gedacht zum erzeugen der Buttons und dort wollt ich dann auch die buttons dem buttonArray übergeben.

Danke schon mal 🙂
 
Wo liegt denn da das Problem?
Java:
private JButton[] buttons = new JButton[ 25 ];
private int nbuttons = 0;

@ Override
public void actionPerformed( ActionEvent e ) {
		
	JButton button = new JButton( "Ich bin ein JButton" );
	
	buttons[ nbuttons++ ] = button;
	
}
 
Naja ich hätt das gern in ner anderen klasse.... Also neuer soll dafür sorgen, dass die hinzugefügt werden.... Außerdem sollen diese neuen erst ab der 5. Position ins Array eingefügt werden. Die anderen Positionen werden bereits gefüllt
 
Das in eine andere Klasse zu packen solltest du wohl noch alleine hinkriegen, oder?
Und das Problem, das die Buttons erst ab dem fünften Slot eingefügt werden sollen, lässt sich doch einfach so lösen:
Java:
public static final int MAXBUTTONS = 25;

private JButton[] buttons = new JButton[ MAXBUTTONS ];
private int nbuttons = 5;

@ Override
public void actionPerformed( ActionEvent e ) {
	
	if ( nbuttons < MAXBUTTONS ) {
		
		JButton button = new JButton( "Ich bin ein JButton" );
		
		buttons[ nbuttons++ ] = button;
		
	}
	
}
 
Hmm jetzt kann ich Buttons erzeugen aber nur, wenn ich mit der Maus über freie stellen in meinem panel fahren.... nicht wenn ich auf den Button klicke 😀

Java:
neuer = new JButton ("Neuer Button");		
		neuer.addActionListener(this);  //ActionListener fürs erzeugen
		this.add(neuer);

public void actionPerformed(ActionEvent e) {
		
		
			ListenerNeu.run(buttonArray,arbeiten, this);
		
		
	}

////////////////////////ListenerNeu/////////////////

public final static void run ( JButton[] buttonArray, String[] arbeiten, Pan1 pan1){
		
//		Listener l = new Listener(buttonArray);
		
		for (int j = 5; j < 25; j++) {
			buttonArray[j] = new JButton(arbeiten[j]);			
            buttonArray[j].setLocation(20, 40 * j + 30);
            buttonArray[j].setSize(100, 20);
//            buttonArray[j].addActionListener((ActionListener) l);
            
			pan1.add(buttonArray[j]);	
			
		}
	}

Weißt du warum?

Wenn ich deins ausprobiere, werden die buttons dem panel nicht hinzugefügt. wenn ich es versuche, schmeist er mir fehlermeldungen raus. aber danke für den versuch 🙂
 
Zuletzt bearbeitet:
Die Fehlermeldungen wären hilfreich!

PS. Ist es Absicht, dass du so viele umständliche "Weiterleitungen" machst

PPS. Anstatt 100-mal buttonArray[j] zu schreiben, wäre es denn nicht einfacher, den Button 1-mal zu definieren?
 
Zuletzt bearbeitet:
Hey,

ne ist keine absicht. Wo mach ich das denn?

die Fehlermeldung ist, dass er nicht von nem JButton in nen int convertieren kann. Bloß wo tut er das?
Wie kann ich das mit dem 100 mal schreiben umgehen?
Ich hab noch nie mit nem ButtonArray gearbeitet. Deswegen stell ich mich so an... 🙁
 

Neue Themen


Zurück
Oben