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