2017-01-13 2 views
0

Ich versuche, JButtons mithilfe eines JMenuItem zu erstellen. Ich habe ein neues Mitarbeiter-JMenuItem, das nach dem Anklicken einen Rahmen mit vier JTextFields öffnet: Mitarbeitername, Mitarbeiter-ID-Nummer, Mitarbeiter-Pay-Rate und Mitarbeiterstunden, und ein JButton, Übernehmen. Nachdem der Benutzer die Daten in die JTextFields eingegeben und die Apply JButton-Taste gedrückt hat, soll das Hauptfenster ein JButton mit den eingegebenen Daten hinzufügen. HierSo erstellen Sie JButtons mithilfe von JMenuItem und ActionListener

ist der Code für das Programm Anzeige

public ProgramDisplay() { 

     setTitle("Fluid Accounts"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     setLayout(new GridLayout(5, 5)); 
     account = new JButton("<html>" + "Samuel Tayman" + "<br>" + "Wages: " + findPay(hours, payRate)); 
     add(account); 
     account = new JButton("<html>" + "Janice" + "<br>" + "Wages: " + findPay(hours, payRate)); 
     add(account); 

     buildMenuBar(); 
     pack(); 
     setVisible(true); 

    } 

Und hier ist der Code für den neuen Mitarbeiter JMenuItem mit dem ActionListener:

private void buildEmployeeMenu() 

{ 

    newEmployee = new JMenuItem("New Employee"); 
    newEmployee.addActionListener(new NewListener()); 
    employeeMenu = new JMenu("Employees"); 
    employeeMenu.add(newEmployee); 

} 

/** 
* Private inner class that handles the event that is generated when the 
* user selects New from the file menu. 
*/ 

private class NewListener extends JFrame implements ActionListener { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public void actionPerformed(ActionEvent e) { 

     name = ""; 
     employeeID = ""; 
     rateOfPay = ""; 
     hoursWorked = ""; 
     JButton Apply = new JButton("Apply"); 

     Apply.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       name = nameField.getText(); 
       employeeID = IDField.getText(); 
       rateOfPay = payRateField.getText(); 
       hoursWorked = hoursField.getText(); 
       setVisible(false); 
      } 
     }); 
     setLayout(new GridLayout(4, 4)); 
     add(nameField = new JTextField("Enter the Employee Name")); 
     add(IDField = new JTextField("Enter the Employee's ID Number")); 
     add(payRateField = new JTextField("Enter the Employee's Pay Rate")); 
     add(hoursField = new JTextField("Enter the Employee's Hours Worked")); 
     add(Apply); 

     pack(); 
     setVisible(true); 

    } 

} 

Example of current running program

ich es gemacht habe so dass die in den textField Komponenten gespeicherten Daten in Felder gespeichert werden, aber ich konnte nicht erfolgreich erstellen e a JButton im Hauptprogrammfenster mit der Schaltfläche Übernehmen.

Jede Hilfe und Unterstützung ist willkommen!

+0

Ihr Programm Anzeige JFrame wird über den Text innerhalb der JText Felder in den NewListener wissen sonst wird es nicht möglich sein, extrahiere den neu eingegebenen Text. –

+0

Sobald das Programm Display weiß, welcher Name, MitarbeiterID ect. sind, müssen Sie den fraglichen Knopf ergreifen und dann die Attribute der Taste entsprechend dem Namen, employeeID ect ändern. –

Antwort

0

Implementieren Sie eine Methode zum Hinzufügen einer JButton in der ProgramDisplay-Klasse, z.

void addButton(String name, String employeeID, String rateOfPay, String hoursWorked) { 
     add(new JButton(name + ":" + employeeID + ", " + rateOfPay + " - " + hoursWorked); } 

übergeben Sie die ProgramDisplay-Instanz als letzten Parameter an den NewListener, z. G.

private class NewListener extends JFrame implements ActionListener { 
    final ProgramDisplay pd; 
    NewListener(ProgramDisplay pd) { 
      this.pd = pd; 
    } 
..... 

und rufen Sie die AddButton Methode aus Ihrer ActionPerformed Methode:

Apply.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      name = nameField.getText(); 
      employeeID = IDField.getText(); 
      rateOfPay = payRateField.getText(); 
      hoursWorked = hoursField.getText(); 
      setVisible(false); 
      NewListener.this.pd.addButton(name, employeeID, rateOfPay, hoursWorked); 
     } 
    }); 
+0

Vielen Dank dafür! Ich habe nicht darüber nachgedacht, eine andere Methode dafür zu entwickeln, sondern stattdessen den ActionListener des Apply-Buttons. Nach einigen kleinen Änderungen, um den Rest des Codes anzupassen, werden die Schaltflächen erfolgreich mit den eingegebenen Daten hinzugefügt. Es gibt noch ein paar weitere Probleme, aber ich glaube, dass genug Forschung mit Trial and Error dazu beitragen wird, mich dorthin zu bringen, wo ich sein muss. Ich schätze die Hilfe! –

Verwandte Themen