簡體   English   中英

如何使用JMenuItem和ActionListener創建JButton

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM