java - 按钮在扩展 JButton 时不执行任何操作,但它通过返回 JButton 的方法来执行此操作

标签 java swing inheritance constructor jbutton

你好吗?,我有一个问题,我确信这确实很愚蠢,但我不知道它是什么。我正在尝试创建一个按钮,因此每次我想使用该按钮来执行我想要的操作时,我所做的就是创建已经拥有该操作和资源包的新按钮。

我的代码是这样的:

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

Action 执行得很完美。

我想知道为什么会发生这种情况,我认为这很简单,但我看不到它。我想这样做,因为我想在一个名为“buttons”的包中为每个按钮创建一个类,并通过这种方式使我的代码更加“面向对象”

非常感谢!

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

最佳答案

您的类已经扩展了 JButton,因此您不想创建新按钮。

我认为你应该这样做:

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

关于java - 按钮在扩展 JButton 时不执行任何操作,但它通过返回 JButton 的方法来执行此操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14743138/

相关文章:

RMI 绑定(bind)问题(从 Windows RMI 服务器到 Ubuntu RMI 注册表)

java - 绘画应用程序 : Drag free-form lines (paths) with AffineTransform

java - 为什么Graphics类中的drawPolygon方法是抽象的而我仍然可以使用它

Java Swing,无法显示下拉菜单

c++ - 如何有条件地实例化不同的子类?

java - 谷歌云消息或 XMPP

java - 在自定义 ListView 适配器中创建方法的正确方法

c# - C#中如何从子构造函数调用父构造函数

32 位签名二进制字符串的 Java Integer.parseInt() 抛出 NumberFormatException

c++ - 使用 const char * 时如何将记录器与模板一起使用?