[英]How to create JButtons using JMenuItem and ActionListener
我試圖通過使用JMenuItem創建JButton。 我有一個新的Employee JMenuItem,當單擊它時會打開一個框架,其中包含四個JTextField:雇員姓名,雇員ID號,雇員薪水率和工作小時數,以及一個JButton,應用。 用戶將數據輸入到JTextFields中並單擊Apply JButton之后,應該在主窗口中添加帶有輸入數據的JButton。
這是程序顯示的代碼
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);
}
這是帶有ActionListener
的New Employee JMenuItem
的代碼:
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);
}
}
我這樣做是為了將存儲在textField
組件中的數據保存到字段中,但是我無法使用Apply按鈕在主程序窗口中成功創建JButton
。
任何幫助和幫助,感激不盡!
實現一種在ProgramDisplay類中添加JButton的方法,例如
void addButton(String name, String employeeID, String rateOfPay, String hoursWorked) {
add(new JButton(name + ":" + employeeID + ", " + rateOfPay + " - " + hoursWorked); }
將ProgramDisplay實例作為最終參數傳遞給NewListener,例如
private class NewListener extends JFrame implements ActionListener {
final ProgramDisplay pd;
NewListener(ProgramDisplay pd) {
this.pd = pd;
}
.....
並從ActionPerformed方法中調用addButton方法:
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);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.