Verschiedene ActionEvents für ein JButton-Array

Drachenstern

Grünschnabel
hallo zusammen,
ich habe folgendes problem: in einem kalender soll man für jeden tag eines monats einen termin eintragen können. wenn man dann auf den tag klickt, soll sich ein textfenster öffnen indem man notizen machen kann.
allerdings greift man immer auf den gleichen actionlistener zu bzw. scheint nur ein button zu existieren, nämlich der letzte den ich in das array stopfe. soll heißen egal welchen tag ich anklicke ich bekomme immer das textfeld vom letzten tag des monats.
hoffe ihr könnt mir weiterhelfen... *seufz*
hier meine methode, in der ich die tage des monats aufrufe und einen termin machen kann:
Code:
private void monateInit(){
		
		mitte = new Container();		
		mitte.setLayout(new GridLayout(5,7));	
				
		//ausgewähltes Jahr und Monat einlesen 
		year = Integer.parseInt(Jahr.getText());
		month = monList.getSelectedIndex();
	    
	    Calendar kal = new GregorianCalendar();
	    kal.set(Calendar.MONTH, month);
	    kal.set(Calendar.YEAR, year);
	    kal.set(Calendar.DAY_OF_MONTH, 1);
	    
	    System.out.println(""+kal.getActualMaximum(Calendar.DAY_OF_MONTH));
	    
	    for(int j = kal.getActualMinimum(Calendar.DAY_OF_MONTH);
	    		j <= kal.getActualMaximum(Calendar.DAY_OF_MONTH); j++){
	   		
	    	//kal.set(Calendar.DATE, j); 
	    	day = j;
	    	String text = String.valueOf(j);
	    	mitte.add(but[j] = new JButton(text));
	    	
	    	but[j].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					Termin j = new Termin(year, month, day);
					j.fenster_Ein_Ausgabe();		
				}
			});	
	    	
	    	//System.out.println("Kalender: "+year+month+day);
	    	
	    }
 
In deinem Code setzt du mit jedem Schleifendurchlauf beim erzeugen der buttons day auf den neusten Wert und das wird dann auch jener sein, der am Ende beim Listener verwendet wird (ausser du manipulierst ihn ausserhalb dieses Snippets noch....) So ist day nach dem erzeugen deiner Buttons 30 resp 31 und alle Buttons nehmen beim drücken den Wert...

versuch stattdessen:

Code:
but[j].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
                                       JButton b = (JButton)e.getSource();
                                       int d = Integer.parseInt(b.getText);
					Termin j = new Termin(year, month, d);
					j.fenster_Ein_Ausgabe();		
				}
			});

Das sollte dann gehen...

.bile
 
Zuletzt bearbeitet:
Zurück