2010-11-01 64 views
0

我想创建一些菜单栏(项目,并与他们连接的动作对象或处理程序的方法)的说明与gui库的一些抽象。我能以什么方式做到这一点?Menubar的抽象描述

一些草案

数据结构(无需访问方法和其他的东西):

public class MenuInfoHolder { 
    List<Column> menu; 

    public static class Column { 
     SimpleItem title; 
     List<Block> blocks; 
    } 
    public static class SimpleItem{ 
     String title; 
     char key; 
    } 
    public static class Block{ 
     List<SimpleItem> items; 
    } 
    public static abstract class ActionProducedItem extends SimpleItem { 
     abstract void invokeActionHandler(ActionHandler handler); 
    } 
} 

这里可能有一些使用,比如

Menu menu = new Menu(); 
ActionProducedItem item = new ActionProducedItem("Aaaa", 'a'){ 
    @Override 
    void invokeActionHandler(ActionHandler handler) { 
     handler.foo(); 
    } 
}; 
Block block = new Block(); 
block.add(item); 
Column column = new Column("BBB", 'B'); 
column.add(block); 
menu.add(column); 

确实存在任何其他更好的实现(可能与Builder模式或春天框架)?

UPD: 另一个世界,

使用SWT,SMT,如:

final Menu popupMenu = new Menu(shell, SWT.BAR); 
MenuItem menuItem = new MenuItem(popupMenu, SWT.CASCADE); 
menuItem.setText("More options"); 
Menu subMenu = new Menu(menuItem); 
menuItem.setMenu(subMenu); 
... 
shell.setMenuBar(menu); 

使用秋千,SMT,如:

JMenuBar menuBar = new JMenuBar();     
    setJMenuBar(menuBar);   
    JMenu fileMenu = new JMenu("File"); 
    JMenu editMenu = new JMenu("Edit"); 
    menuBar.add(fileMenu); 

但我们有相同的数据操作两个案例。所以我想对此做一些抽象。

谢谢。

+0

你的例子并没有真正清楚你想要完成什么(无论如何)。你能更详细地了解你的目标是什么吗? – 2010-11-01 20:35:58

+0

@Mark Peters:更新。 – 2010-11-01 20:44:19

回答

0

How to Use Actions是所有想到的。

+0

我想做一些菜单结构的抽象。我不能只用行动去做。 – 2010-11-02 06:50:25