Java 按钮没有´;扩展JButton时不执行任何操作,但它使用返回JButton的方法执行此操作

Java 按钮没有´;扩展JButton时不执行任何操作,但它使用返回JButton的方法执行此操作,java,swing,inheritance,constructor,jbutton,Java,Swing,Inheritance,Constructor,Jbutton,你好吗?我有一个问题,我确信这是一件非常愚蠢的事情,但我不知道它是什么。我正在尝试创建一个按钮,因此每次我想使用执行我想要的操作的按钮时,我所做的就是创建一个已经拥有该操作和resourceBundle的新按钮 我的代码是: public class AcceptNewTaskButton extends JButton { private ActionManager actionManager; private JButton acceptNewTaskButton; public A

你好吗?我有一个问题,我确信这是一件非常愚蠢的事情,但我不知道它是什么。我正在尝试创建一个按钮,因此每次我想使用执行我想要的操作的按钮时,我所做的就是创建一个已经拥有该操作和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(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);  
动作完美地完成了

我想知道为什么会发生这种情况,我认为这很简单,但我看不出来。我希望这样做,因为我希望在一个名为buttons的包中有一个包含每个按钮的类,这样可以使我的代码更“面向对象”

非常感谢你


pd:如果我犯了语法错误,请原谅,英语不是我的母语

您的类已经扩展了JButton,所以您不想创建新按钮

我认为你应该做:

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

newTaskAction
后面的
Action
看起来像什么?