2017-01-13 5 views
0

Я пытаюсь создать JButtons с помощью JMenuItem. У меня есть новый сотрудник JMenuItem, который при щелчке открывает рамку с четырьмя JTextFields: имя сотрудника, идентификатор сотрудника, номер заработной платы сотрудника и рабочие часы, а также один JButton, Apply. После того, как пользователь вводит данные в JTextFields и нажимает Apply JButton, основное окно должно добавить JButton с введенными данными.Как создать JButtons с помощью JMenuItem и ActionListener

Вот код для дисплея программы

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); 

    } 

А вот код для нового сотрудника JMenuItem с 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

Я сделал это так что данные, хранящиеся в компонентах textField, сохраняются в полях, однако я не смог успешно создать e a JButton в главном окне программы с помощью кнопки «Применить».

Любая помощь и помощь приветствуются!

+0

ваша программа Display JFrame будет знать о тексте внутри полей JText в NewListener иначе он не сможет извлечь вновь введенный текст. –

+0

Как только Дисплей программы узнает, какое имя, employeeID ect. вам нужно взять эту кнопку, а затем изменить атрибуты кнопки в соответствии с именем, employeeID ect. –

ответ

0

Внедрите метод добавления JButton в класс ProgramDisplay, например.

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

передать экземпляр ProgramDisplay в качестве последнего параметра в NewListener, e. г.

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

и вызвать метод AddButton из вашего ActionPerformed метода:

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

Спасибо за это! Я не думал о том, чтобы сделать другой метод, я продолжал работать над ActionListener кнопки Apply. После нескольких небольших изменений, которые соответствуют остальной части кода, кнопки добавляются успешно с введенными данными. Выполняя еще несколько проблем, но я считаю, что достаточно исследований с проб и ошибок поможет мне, где я должен быть. Я ценю помощь! –

Смежные вопросы