如有一个按钮(selece),我要给这个按钮下面添加几个东西,1、public int add(int m,int n);
2、public double div(int m,int n);  3、public int sub(int m,int n);就像是下拉列表一样按下按钮,按钮下面显示这几个方法,然后我可以选择其中的一个。我想做的就跟Eclipse里Run按钮那样,按右边的三角号,就会显示要运行的类那样。如何做啊,用什么组件啊?
我还不知道Eclipse里Run按钮和紧挨着他的三角按钮是属于一个整体,还是分开的!他的源程序在安装文件的哪个文件夹里,我实在找不到!谢谢!

解决方案 »

  1.   

    没看过代码,纯属猜测eclipse的run按钮应该是一个button,然后上面用的图片,
    根据鼠标点的位置,判断是执行,还是三角的下拉菜单下拉菜单应该使用的popupmenu之类的控件
      

  2.   

    eclipse使用SWT做的,我就用SWT模拟个
    随便看看吧
    package to.shin.sai;
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.MouseEvent;
    import org.eclipse.swt.events.MouseListener;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Menu;
    import org.eclipse.swt.widgets.MenuItem;
    import org.eclipse.swt.widgets.MessageBox;
    import org.eclipse.swt.widgets.Shell;public class Test4PopupMenu { /**
     * @param args
     */
    public static void main(String[] args) {
    new Test4PopupMenu();
    } public Test4PopupMenu() {
    Display dis = Display.getDefault();
    final Shell sh = new Shell(dis);
    sh.setSize(500, 400); final Button btn = new Button(sh, SWT.NONE);
    btn.setBounds(50, 50, 80, 20);
    btn.setText("|"); btn.addMouseListener(new MouseListener() { @Override
    public void mouseUp(MouseEvent e) {
    // if (e.x < (btn.getBounds().width / 2)) {
    // when the mouse down in left half and up in any area
    MessageBox mb = new MessageBox(sh);
    mb.setMessage("This is left half..");
    mb.open();
    // }
    } @Override
    public void mouseDown(MouseEvent e) {
    if (e.x > (btn.getBounds().width / 2)) {
    // when the right half is clicked
    Menu m = new Menu(btn);
    m.setLocation(btn.toDisplay(0, 20).x, btn.toDisplay(0, 20).y);
    MenuItem mi = new MenuItem(m, SWT.NONE);
    mi.setText("test1");
    mi = new MenuItem(m, SWT.NONE);
    mi.setText("test2");
    m.setVisible(true);
    }
    } @Override
    public void mouseDoubleClick(MouseEvent arg0) {
    }
    }); sh.open();
    while (sh != null && !sh.isDisposed()) {
    if (!dis.readAndDispatch())
    dis.sleep();
    }
    }}