2017-01-13 8 views
0

JMenuItemを使用してJButtonを作成しようとしています。私は新しいEmployee JMenuItemをクリックして、4つのJTextField:Employee Name、Employee IDNumber、Employee Pay Rate、Employee Hours Workedと1つのJButton、Applyを持つフレームを開きます。ユーザーがJTextFieldsにデータを入力してApply JButtonを押すと、メインウィンドウに入力されたデータを含むJButtonが追加されます。ここでJMenuItemとActionListenerを使用して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と新入社員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); 

    } 

} 

Example of current running program

私はそれを作りましたそのため、textFieldコンポーネントに保存されているデータはフィールドに保存されますが、正常に作成できませんでしたApplyボタンを使用して、メインプログラムウィンドウのJButtonに移動します。

ご協力いただければ幸いです。

+0

あなたのプログラム表示のJFrameがNewListenerでJTextフィールド内のテキストについて知る必要がありますそうでなければ、することはできません新しく入力したテキストを抽出します。 –

+0

プログラムディスプレイには、社員IDなどの名前がわかります。問題のボタンをつかんで、その名前の従業員IDに従ってボタンの属性を変更する必要があります。 –

答えて

0

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

ありがとうございます!別のメソッドを作成することを考えなかったので、代わりにApplyボタンのActionListenerを使用しました。残りのコードに少しずつ変更を加えると、入力されたデータとともにボタンが正常に追加されます。さらにいくつかの問題に取り組んでいますが、試行錯誤のための十分な調査が、私が必要とする場所に私を助けてくれると信じています。私は助けに感謝します! –

関連する問題