0

お元気ですか?、本当にばかげていると思うのですが、それが何なのかわからないという問題があります。ボタンを作成しようとしているので、必要なアクションを実行するボタンを使用するたびに、アクションとresourceBundleを既に所有している新しいボタンを作成するだけです。

私のコードはこれです:

public class AcceptNewTaskButton extends JButton {

 private ActionManager actionManager;
 private JButton acceptNewTaskButton;

public AcceptNewTaskButton(JDialog dialog,JDateChooser dateChooser,JTextField      textField){

    super(ResourceBundle.getBundle("Language").getString("locale_button_accept"));
    actionManager = new ActionManager(dialog,dateChooser,textField);

    acceptNewTaskButton = new   JButton(actionManager.getNewTaskAction(dialog,dateChooser,textField));


}}

私がこれをコーディングするとき、このコードは私が望むことをしません

okbutton = new AcceptNewTaskButton(dialog,datechooser,newTaskName);

ボタンは作成されますが、アクションは実行されません。

しかし、その一方で、私がこれをコーディングするとき

public class AcceptNewTaskButton extends JButton {

private ActionManager actionManager;
private JButton acceptNewTaskButton;

public JButton AcceptNewTaskButton(JDialog dialog,JDateChooser dateChooser,JTextField textField){


    actionManager = new ActionManager(dialog,dateChooser,textField);
    acceptNewTaskButton = new JButton(actionManager.getNewTaskAction());
    acceptNewTaskButton.setText(ResourceBundle.getBundle("Language").getString("locale_button_accept"));

    return acceptNewTaskButton;

}}

そして、私はこれを入力します

okButton = new AcceptNewTaskButton().AcceptNewTaskButton(dialog,dateChooser,newTaskName);  

アクションは完全に実行されます。

なぜこれが起こっているのか知りたいのですが、単純なことだと思いますが、見えません。ボタンと呼ばれるパッケージにすべてのボタンのクラスを入れたいので、この方法でこれを行いたいと思います。このようにして、コードをより「オブジェクト指向」にします。

どうもありがとう!

pd:文法の間違いを犯したらすみません、英語は私の母国語ではありません

4

1 に答える 1

2

クラスはすでにJButtonを拡張しているため、新しいボタンを作成する必要はありません。

私はあなたがしているべきだと思います:

// acceptNewTaskButton = new   JButton(actionManager.getNewTaskAction(dialog,dateChooser,textField));
setAction(  actionManager.getNewTaskAction(dialog,dateChooser,textField) );
于 2013-02-07T04:25:16.480 に答える