2017-02-02 4 views
0
private boolean shouldBank; 
private boolean started; 
private long startTime; 
private String areaChoice; 

private FishingArea fishingArea; 

public Fishing (Main s) { 
    this.s = s; 
} 

public void onStart() { 
    FishingMenu menu = new FishingMenu(); 
    menu.setVisible(true); 

    started = true; 
    startTime = System.currentTimeMillis();//Gets time in milliseconds and stores it in a variable. 

    if(menu.exit) { 
     s.log("Script aborted. Exiting."); 
     s.stop(false); 
    } 

    shouldBank = menu.shouldBank; 
    fishingArea = menu.fishingArea; 
    areaChoice = menu.areaChoice; 
} 

Relevante FishingMenu Code:Der beste Weg, Variablen zwischen Klassen zu übergeben?

btnStart.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) {     
      fishingArea = fishingAreas[cmbArea.getSelectedIndex()]; 
      areaChoice = cmbArea.getSelectedItem().toString(); 

      shouldBank = chkBank.isSelected(); 

      exit = false; 
      dispose(); 
     } 
    }); 

Ich habe FishingMenu, wo der Benutzer ihre Optionen und diese Optionen wählt werden in der ersten Klasse verwendet. Die Art und Weise, wie ich es jetzt handhabe, ist, alle relevanten Variablen in der Menü-Klasse öffentlich zu machen und dann Variablen in der Hauptklasse zu erzeugen und sie gleich jenen aus dem Menü zu setzen, wie man am unteren Rand von onStart() sehen kann. Ich weiß, dass dies eine ziemlich schlechte Art ist, dies zu tun, aber ich bin mir nicht sicher, ob es besser geht. Ich bin mir auch nicht sicher, ob diese Top 4 Variablen in der ersten Klassenklasse (shouldBank, started, ... etc) korrekt sind, aber ich benutze sie in der Klasse und wieder, ich kenne keinen besseren Weg . Irgendwelche Vorschläge für irgendein Problem?

Ich habe versucht, etwas Googeln, aber ich war nicht wirklich sicher, wie man die Fragen formuliert.

+2

Methoden haben diese '()' Klammern, wo Sie Parameter an eine andere Methode und obwohl auch an andere Klassen übergeben können ... – SomeJavaGuy

+0

Sie können ein vollständigeres Beispiel in [Codereview.SE] für Design-Feedback buchen? – JETM

+0

@JETM Danke, mir war nicht bewusst, dass es existiert. – SpeedOfSmell

Antwort

0

Sie können Variablen privat machen und Setter verwenden, um die Werte festzulegen. Außerdem können Sie ValueObjects für Ihre Menu-Klasse erstellen. Außerdem empfehle ich Ihnen, den ActionListener zu extrahieren.

+0

Entschuldigung, was meinst du mit dem Extrahieren des ActionListener? – SpeedOfSmell

+0

Macht nichts, es hilft deiner Frage nicht. Es ist meine Programmiergewohnheit. Sie könnten eine Listener-Klasse erstellen, die den ActionListener implementiert, damit Sie Ihr Projekt leichter verwalten können. –

Verwandte Themen