我正在重构我的应用程序,我的老师建议我用更通用的代码替换GUI构建器生成的代码。

现在,每个JMenuItem都有其自己的动作侦听器。我想要实现的是通过在单个动作侦听器中使用枚举来为每个菜单项提供一种通用控制功能。下面的代码应该给您一个总体思路。 clE是枚举键,我相信枚举应实现一个接口以读取其标签。

我一直在做一些研究,我敢肯定这很简单,但是我还不能完全掌握它。提前致谢!

public class JECheckBox<E extends ENUM_Label_INTF<?>> extends JCheckBox {

     private final E clE;

     // +++++++ CONSTRUCTOR +++++++++
     public JECheckBox(final E clE) {
         super( ((GetLabelINTF) clE).GetLabel() );
         this.clE = clE;
     }

     public E GetKey() {
         return clE;
     }
}

最佳答案

我相信枚举应实现一个接口以读取其标签。


如果要读取复选框的文本,则可以通过执行以下操作来创建通用侦听器:

Action action = new AbstractAction()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        JCheckBox checkbox = (JCheckBox)e.getSource();
        System.out.println( checkbox.getText() );
    }
};


现在,您可以将“操作”添加到每个复选框。

请注意,Action是功能更丰富的ActionListener。阅读有关How to Use Actions的Swing教程中的部分,以获取更多信息和示例。

10-06 06:46