【问题标题】:How to create JButtons using JMenuItem and ActionListener如何使用 JMenuItem 和 ActionListener 创建 JButton
【发布时间】:2017-01-13 19:46:36
【问题描述】:

我正在尝试通过使用 JMenuItem 创建 JButton。我有一个新员工 JMenuItem,单击它会打开一个带有四个 JTextField 的框架:员工姓名、员工 IDNumber、员工工资率和员工工作时间,以及一个 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);

    }

这是新员工JMenuItemActionListener 的代码:

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 组件中存储的数据保存到字段中,但是我无法使用应用按钮在主程序窗口中成功创建JButton

感谢任何帮助和帮助!

【问题讨论】:

  • 您的 Program Display JFrame 必须知道 NewListener 中 JText 字段内的文本,否则它将无法提取新输入的文本。
  • 一旦程序显示知道什么名字,employeeID 等。是,您需要抓住有问题的按钮,然后根据名称、员工 ID 等更改按钮的属性。

标签: java jbutton jmenuitem jmenubar


【解决方案1】:

实现在ProgramDisplay类中添加JButton的方法,例如

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

将 ProgramDisplay 实例作为最终参数传递给 NewListener,例如。 G。

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

【讨论】:

  • 谢谢你!我没有考虑为它制作另一种方法,而是继续使用 Apply 按钮的 ActionListener。经过一些小的更改以适应其余代码后,按钮已成功添加并输入了数据。遇到更多问题,但我相信通过反复试验进行的足够研究将帮助我到达我需要的地方。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多