# Argumente der GUI übergeben



## Joey85 (9. Jul 2014)

Hallo an alle,

folgendes Problem: Ich will meiner mit NetBeans erstellten GUI beim Start ein Argument übergeben. Es geht dabei um den Pfad zu einer R-executable, der sich ja je nach Computer ändern kann. Wie ich das Argument setze und in der main() auslesen kann, ist mir klar. Aber wie mache ich es für alle Methoden der Klasse verfügbar? Bis jetzt sieht es so aus:

```
public class CyBar2 extends javax.swing.JFrame {

    /**
     * Creates new form CyBar2
     * @param rexe
     */
    public CyBar2(String rexe) {
        System.out.println(rexe);
        JFileChooser.setDefaultLocale(Locale.ENGLISH);
        UIManager.put("ProgressMonitor.progressText", "Processing...");
        UIManager.put("ProgressMonitor.cancelButtonText", "Cancel.");
        initComponents();
    }

private void BarcodeActionPerformed(java.awt.event.ActionEvent evt) {  
....
}


public static void main(String args[]) {
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(CyBar2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }

        final String rexe = args[0];
        java.awt.EventQueue.invokeLater(new Runnable() {
            @SuppressWarnings("override")
            public void run() {
                new CyBar2(rexe).setVisible(true);               
            }
        });
    }
}
```

Ich will also den String rexe in der Methode BarcodeActionPerformed verfügbar haben.


----------



## turtle (10. Jul 2014)

main ist static definiert, also gibt es sie bereits auf Klassenebene und du (oder die JVM) kann sie aufrufen ohne ein Objekt CyBar2 zu erzeugen.

Die Methode BarcodeActionPerformed, blöder Name, per Konvention werden MethodenNamen  kleingeschrieben und beginnen mit einem Verb, ist aber eine Objekt-Methode. Also muss du ein Objekt erzeugen (new CyBar2(rexe)): tust du schon und kannst somit auf dem Objekt die Methode BarcodeActionPerformed aufrufen.

Der Name lässt darauf schliessen, das irgendwo ein Widget (JButton?) erzeugt wird und diesem ein ActionHandler zugeordnet wurde. Daher würde ich die JButton-Variable als Member in CyBar2  definieren, denn so hast du aus allen Methoden der Klasse Zugriff darauf.  Diesen Code hast du aber nicht gepostet.


----------

