2016-07-30 33 views
0

ausgeführt werden sollen Nach dem Hörer auf eine zweite Schaltfläche Hinzufügen, die zum ersten Mal erstellt Taste führt zweimal die gleiche Aktion:JAVA Nach einer seccond Knopf und seine Action Hinzufügen Aktionen zweimal

public class ControladorTablaMaterial implements ActionListener { 


private VistaTablaMaterial vistaTablaMaterial; 
    private JPanel jContentPane = null; 
    private JScrollPane scrollPane = null; 
    private JTable tablaMaterial; 
    private JButton mostrarElementoButton; 
    private JButton eliminarElementoButton; 
    private ModeloTablaMaterial modeloTablaMaterial; 


    public ControladorTablaMaterial(ArrayList<Material> coleccionMaterial, ActionListener listener) { 
     String[] cabecera = {"Material", "Titulo"}; 
     this.vistaTablaMaterial = new VistaTablaMaterial(cabecera, coleccionMaterial); 
     setupVistaTablaMAterial(listener); 
    } 

    private void setupVistaTablaMAterial(ActionListener listener) { 
     this.scrollPane = vistaTablaMaterial.getScrollPane(); 
     this.tablaMaterial = vistaTablaMaterial.getTablaMaterial(); 
     this.modeloTablaMaterial = vistaTablaMaterial.getModeloTablaMaterial(); 
     this.mostrarElementoButton = vistaTablaMaterial.getMostrarElementoButton(); 
     this.eliminarElementoButton = vistaTablaMaterial.getMostrarElementoButton(); 
     this.initListeners(listener); 
    } 


    private void initListeners (ActionListener listener) { 
     getMostrarElementoButton().addActionListener(listener); 
     getEliminarElementoButton().addActionListener(listener); 

    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 

    } 

} 

Alles funktioniert gut, wenn ich die löschen Leitung:

getEliminarElementoButton().addAtionListener(listener); 

aber natürlich muss ich diese Taste, um auch gehört zu werden.

Innerhalb der Listener-Klasse, in der actionPerformed (Action e) Methode, verwende ich den folgenden Code beiden Tasten zu unterscheiden:

if (e.getSource().equals(this.getControladorTablaMaterial().getMostrarElementoButton())) { 

, die bis auf diesen Rahmen zu funktionieren scheint. Irgendwelche Ideen?

Off Topic: Warum funktioniert die Codeeinrückung nicht ordnungsgemäß im Stackoverflow-Editor?

+0

1) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. 2) Siehe [Erkennung/Behebung für die hängende, nahe Klammer eines Codeblocks] (http://meta.stackexchange.com/q/251795/155831) für ein Problem, das nicht mehr gestört werden konnte. –

+0

Dies ist ein Kopier-/Einfügefehler; Abstimmung als ein durch Tippfehler verursachtes Problem. – dasblinkenlight

+0

Werfen Sie einen Blick auf die Bearbeitung, die Sie gerade rückgängig gemacht haben, um zu sehen, warum die Einrückung nicht funktioniert (lange Rede, kurzer Sinn, weil Sie es nicht richtig machen). – dasblinkenlight

Antwort

1

Das Problem ist in diesen Zeilen:

this.mostrarElementoButton = vistaTablaMaterial.getMostrarElementoButton(); 
this.eliminarElementoButton = vistaTablaMaterial.getMostrarElementoButton(); 

dass Sie die gleiche Taste für beide bekommen.