OOP不同的对象需要运行不同的方法(Java)

时间:2014-11-24 05:29:01

标签: java oop jpanel

我正在通过创建JPanel的子类来为简单游戏创建GUI。我决定创建自己的按钮,点击后会执行某些操作。但是,从根本上说,每个按钮在按下时应该与几乎所有其他按钮有所不同。

我应该如何为每个按钮分别执行操作?想到的最直接的解决方案是为我制作的每个按钮创建一个不同的类,但是这似乎不是正确的OOP和按钮创建的工作方式,是否有更好的方法来实现这一点?

1 个答案:

答案 0 :(得分:1)

即使你使用自己的按钮,你仍然可以调整swing JButton使用的模式。使用JButton,您可以使用单独的ActionListener类来执行操作(如果添加更多侦听器,则可以使用多个操作)。通过这种方式,您可以拥有一个共同的按钮类,该类负责其设计并可单击,但将任何交互委托给侦听器。点击一下,它就会调用所有动作监听器的actionPerformed方法来执行实际操作。

在挥杆设置中,按钮看起来像这样:

JButton button = new JButton();
ActionListener action = new ActionListener() {
    @Override
    public void actionPerformed( ActionEvent e ) {
      // do something
    }
};
button.addActionListener(action);

当然,您没有管理多个动作侦听器,每个按钮使用一个动作就足够了。