Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用外壳和对齐按钮调整表的大小?_Java_Eclipse_Button_Swt - Fatal编程技术网

Java 使用外壳和对齐按钮调整表的大小?

Java 使用外壳和对齐按钮调整表的大小?,java,eclipse,button,swt,Java,Eclipse,Button,Swt,如果我拖动shell的边框,有人能告诉我如何调整表的大小吗。换句话说,我希望我的表端连接到shell,这样,如果shell正在调整大小,表将跟随。我也有巴顿的问题。我需要将它们放置在右下角的表格下方,但无论我设置对齐(GridData.HORIZONTAL\u ALIGN\u start或new GridData(SWT.END,SWT.END,false,false)或new GridData(SWT.END,SWT.bottom,false,false),都与输出相同),都会将我的两个按钮设

如果我拖动shell的边框,有人能告诉我如何调整表的大小吗。换句话说,我希望我的表端连接到shell,这样,如果shell正在调整大小,表将跟随。我也有巴顿的问题。我需要将它们放置在右下角的表格下方,但无论我设置对齐(GridData.HORIZONTAL\u ALIGN\u start或new GridData(SWT.END,SWT.END,false,false)或new GridData(SWT.END,SWT.bottom,false,false),都与输出相同),都会将我的两个按钮设置在左下角,一个设置在右下角。以下是表格的代码和图片:

try {
        display = new Display();
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    shell = new Shell(display);
    shell.setLayout(new GridLayout());

    GridLayout layout = new GridLayout();
    shell.setLayout(layout);

    Composite composite = new Composite(shell, SWT.NONE);
    // Create a composite to hold the children
    GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_BOTH);
    composite.setLayoutData(gridData);

    // Set numColumns to 3 for the buttons
    GridLayout layout1 = new GridLayout(3, false);
    layout1.marginWidth = 4;
    composite.setLayout(layout1);

    int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | 
            SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
    final int NUMBER_COLUMNS = 6;
    table = new Table(composite, style);

    GridData gridData1 = new GridData(GridData.FILL_BOTH);
    gridData1.grabExcessVerticalSpace = true;
    gridData1.horizontalSpan = 3;
    table.setLayoutData(gridData1);

    table.setLinesVisible(true);
    table.setHeaderVisible(true);

    String[] titles = { methodHeader, messageHeader, parametersHeader, resultHeader, deltaHeader, assertionHeader};
    for (int i = 0; i < titles.length; i++) {
        TableColumn column = new TableColumn(table, SWT.LEFT, i);
        column.setText(titles[i]);
        table.getColumn(i).pack();
    }


    addDataToTableModel(methodList);

    GridData gridData2 = new GridData(SWT.END, SWT.END, false, false);
    gridData2.widthHint = 80;

    buttonOk = new Button(composite, SWT.PUSH | SWT.CENTER);
    buttonOk.setText(ok);
    buttonOk.setLayoutData(gridData2);

    buttonCancel = new Button(composite, SWT.PUSH | SWT.CENTER);
    buttonCancel.setText(cancel);
    /*GridData gridData3 = new GridData(SWT.END, SWT.END, false, false);
    gridData3.widthHint = 80;*/
    buttonCancel.setLayoutData(gridData2);

    buttonHelp = new Button(composite, SWT.PUSH | SWT.CENTER);
    buttonHelp.setText(help);
    /*GridData gridData4 = new GridData(SWT.END, SWT.END, false, false);
    gridData4.widthHint = 80;*/
    buttonHelp.setLayoutData(gridData2); 

按钮的结果相同

在布局中使用4列:

final GridLayout layout1 = new GridLayout(4, false);
并使用空填充标签抓住按钮左侧的空间:

Label filler = new Label(composite, SWT.LEAD);
filler.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));

GridData gridData2 = new GridData(SWT.END, SWT.END, false, false);
gridData2.widthHint = 80;

Button buttonOk = new Button(composite, SWT.PUSH | SWT.CENTER);
buttonOk.setText("OK");
buttonOk.setLayoutData(gridData2);

gridData2 = new GridData(SWT.END, SWT.END, false, false);
gridData2.widthHint = 80;

Button buttonCancel = new Button(composite, SWT.PUSH | SWT.CENTER);
buttonCancel.setText("Cancel");
buttonCancel.setLayoutData(gridData2);

gridData2 = new GridData(SWT.END, SWT.END, false, false);
gridData2.widthHint = 80;

Button buttonHelp = new Button(composite, SWT.PUSH | SWT.CENTER);
buttonHelp.setText("Help");
buttonHelp.setLayoutData(gridData2);

不要对多个控件重复使用
GridData
——这不起作用。每个控件都需要一个新的
GridData
。是的,我尝试了两个,结果是一样的:(我没有说它会解决问题,我说它是坏代码。好的,谢谢,我没有得到:)谢谢这解决了我的按钮问题,现在我又留下了一个,如何删除最后一列(空白)如果调整shell的大小,则调整表的大小?调整shell的大小时,表会调整大小-您的意思是调整列的大小吗?我不知道你会如何使用表格,因为我总是使用JFace TableViewer。是的,这就是我的意思,我以前使用swing,并使用frame调整列的大小。另外,如果我使用TableViewer,我可以编辑单元格吗?好的,那么您可以给我一些链接,用于编辑我表格中的这些空单元格,并在单击“确定”按钮后逐行获取其内容,因为我找不到任何类似的示例。
Label filler = new Label(composite, SWT.LEAD);
filler.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));

GridData gridData2 = new GridData(SWT.END, SWT.END, false, false);
gridData2.widthHint = 80;

Button buttonOk = new Button(composite, SWT.PUSH | SWT.CENTER);
buttonOk.setText("OK");
buttonOk.setLayoutData(gridData2);

gridData2 = new GridData(SWT.END, SWT.END, false, false);
gridData2.widthHint = 80;

Button buttonCancel = new Button(composite, SWT.PUSH | SWT.CENTER);
buttonCancel.setText("Cancel");
buttonCancel.setLayoutData(gridData2);

gridData2 = new GridData(SWT.END, SWT.END, false, false);
gridData2.widthHint = 80;

Button buttonHelp = new Button(composite, SWT.PUSH | SWT.CENTER);
buttonHelp.setText("Help");
buttonHelp.setLayoutData(gridData2);