Layout SWT布局选择

Layout SWT布局选择,layout,swt,Layout,Swt,我试图制作一个框,允许您选择一些变量,并对所选变量重新排序。左框开始填满,右框开始清空。您可以将项目从左向右移动,在右侧,您可以重新排列它们的顺序(使用向上和向下按钮)。这允许您选择所需的项目和顺序(用于在程序的另一部分中进行排序) 我要选择的布局如下所示: 不幸的是,结果是。。。嗯…:-( 我正在寻找的功能都很有用。耶。我只是在布局上有点困难。我想如果我能达到以下四个主要目标,我会被设定 我怎样才能在底部而不是在多层上获得“确定”和“取消”按钮 如何使Multi具有预设的大小(例如…10)

我试图制作一个框,允许您选择一些变量,并对所选变量重新排序。左框开始填满,右框开始清空。您可以将项目从左向右移动,在右侧,您可以重新排列它们的顺序(使用向上和向下按钮)。这允许您选择所需的项目和顺序(用于在程序的另一部分中进行排序)

我要选择的布局如下所示:

不幸的是,结果是。。。嗯…:-(

我正在寻找的功能都很有用。耶。我只是在布局上有点困难。我想如果我能达到以下四个主要目标,我会被设定

  • 我怎样才能在底部而不是在多层上获得“确定”和“取消”按钮
  • 如何使Multi具有预设的大小(例如…10)
  • 如何使箭头按钮垂直堆叠而不是水平堆叠
  • 如何使箭头按钮位于两个MULTI之间
  • 我想这些特定目标中的每一个都可能是一条线,可能是一点点的管道

    另一方面,我使用的是GridLayout——这可能是一个糟糕的选择。像这样的东西有更好的选择吗

    不用多说,下面是生成这种可怕混乱的代码

        @Override
    protected Control createDialogArea(Composite parent) {
        parent.getShell().setText("Multi-sort");
    
        Composite dialogcomp = new Composite(parent, SWT.NONE);
        dialogcomp.setLayout(new GridLayout(3, false));
    
        available = new List(getShell(), SWT.BORDER | SWT.V_SCROLL);
        for(String t : MultiSortDialog.availableNames) {
            available.add(t);
        }
        used = new List(getShell(), SWT.BORDER | SWT.V_SCROLL);
        for(String t : MultiSortDialog.usedNames) {
            used.add(t);
        }
        createButton(parent, ADD, ">", false);
        createButton(parent, REM, "<", false);
        createButton(parent, UP, "^", false);
        createButton(parent, DOWN, "V", false);
    
        return dialogcomp;
    }
    
    @覆盖
    受保护的控件createDialogArea(复合父级){
    parent.getShell().setText(“多重排序”);
    复合对话框comp=新复合(父项,SWT.NONE);
    对话框comp.setLayout(新的GridLayout(3,false));
    可用=新列表(getShell(),SWT.BORDER | SWT.V_滚动);
    for(字符串t:multiportDialog.availableNames){
    增加(t);
    }
    used=新列表(getShell(),SWT.BORDER | SWT.V_滚动);
    for(字符串t:MultiSortDialog.usedNames){
    使用。添加(t);
    }
    createButton(父级,添加“>”,false);
    createButton(父对象,REM,“
    
  • 我建议您只需使用
    对话框的默认“确定”和“取消”按钮,而不要尝试设置自己的按钮。SWT有一个很好的系统,可以将它们放置在系统默认位置(即,在Mac OS上,“确定”按钮将位于右侧,这是正确的位置。)

  • 不要使用
    Dialog.createButton()
    创建按钮。这会在对话框上创建一个按钮,虽然听起来像是您想要做的,但实际上不是。这会创建一个“确定”或“取消”按钮样式的按钮,该按钮应放置在
    dialog
    类拥有的按钮栏组合中,并为最下面一行的“确定/取消”按钮适当设置样式。Y您想在正在创建的组合中创建一个新按钮。即:

  • Button addButton=新按钮(对话框comp,SWT.PUSH);
    addButton.setText(“>”);
    addButton.addSelectionListener(…);
    
  • 要垂直堆叠按钮,请在
    对话框comp
    中创建一个新的组合来包含它们

  • 要在
    列表
    之间放置箭头按钮,您需要确保按正确的顺序添加内容。使用
    网格布局
    ,您需要按希望的顺序添加小部件

  • 其他要点:

  • 不要通过调用
    Shell.setText()
    来更改对话框的标题。在对话框中调用
    setText()

  • 不要试图将
    列表
    设置为父shell中的父对象。您将获得一个组合来放入内容。这将对您的布局造成严重破坏。您基本上是将小部件提升到您不拥有且不布局的内容中。相反,将其放入您创建的
    组合

  • 您可能还希望创建类型为
    SWT.ARROW | SWT.LEFT
    的按钮,而不是简单地绘制
    
    
  • 我建议您只需使用
    对话框的默认“确定”和“取消”按钮,而不要尝试设置自己的按钮。SWT有一个很好的系统,可以将它们放置在系统默认位置(即,在Mac OS上,“确定”按钮将位于右侧,这是正确的位置。)

  • 不要使用
    Dialog.createButton()
    创建按钮。这会在对话框上创建一个按钮,虽然听起来像是您想要做的,但实际上不是。这会创建一个“确定”或“取消”按钮样式的按钮,该按钮应放置在
    dialog
    类拥有的按钮栏组合中,并为最下面一行的“确定/取消”按钮适当设置样式。Y您想在正在创建的组合中创建一个新按钮。即:

  • Button addButton=新按钮(对话框comp,SWT.PUSH);
    addButton.setText(“>”);
    addButton.addSelectionListener(…);
    
  • 要垂直堆叠按钮,请在
    对话框comp
    中创建一个新的组合来包含它们

  • 要在
    列表
    之间放置箭头按钮,您需要确保按正确的顺序添加内容。使用
    网格布局
    ,您需要按希望的顺序添加小部件

  • 其他要点:

  • 不要通过调用
    Shell.setText()
    来更改对话框的标题。在对话框中调用
    setText()

  • 不要试图将
    列表
    设置为父shell中的父对象。您将获得一个组合来放入内容。这将对您的布局造成严重破坏。您基本上是将小部件提升到您不拥有且不布局的内容中。相反,将其放入您创建的
    组合


  • 您可能还希望创建类型为
    SWT.ARROW | SWT.LEFT
    的按钮,而不是简单地为读者绘制
    练习。这正是我想要的,即使没有您的代码!简单的要点使这成为一个很好的答案。代码片段只是锦上添花。非常感谢您!我将成为我想让你知道事情的结果。:-)很感谢你的工作