java - 如何将标签移动到新行?

标签 java swt label

Windows 上的 SWT 是否有新的行命令?如果没有,我在这里做错了什么?

这是代码

    public static void main (String [] args) {
    Display display = new Display();
    Shell shell = new TabsTest().createShell(display);
    shell.setSize(350,500);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
}

private Shell createShell(final Display display) {
    final Shell shell = new Shell(display);
    shell.setText("Betting Tracker");

    //Creating grid layout, used to organize the shell
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 20;
    shell.setLayout(gridLayout);

    //Grid1
    GridData gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
    gridData.horizontalSpan = 20;

    new Label(shell, SWT.NONE).setText("Bet Type:");
        betType = new Combo(shell, SWT.SINGLE | SWT.BORDER);
        betType.setItems(new String[] {"   ", "NFL", "NBA", "CFB"});
        betType.setLayoutData(gridData);

    //Grid2
    GridData gridData2 = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
    gridData2.widthHint = 20;   
    gridData2.horizontalSpan = 5;

    new Label(shell, SWT.NONE).setText("Bets Played:");
        numBets = new Text(shell, SWT.NONE);
        numBets.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        numBets.setLayoutData(gridData2);

    new Label(shell, SWT.NONE).setText("    Won:  ");
        betsWon = new Text(shell, SWT.NONE);
        betsWon.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        betsWon.setLayoutData(gridData2);

    new Label(shell, SWT.NONE).setText("    Lost:  ");
        betsWon = new Text(shell, SWT.FILL);
        betsWon.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, true));
        betsWon.setLayoutData(gridData2);   

    //Grid3
    GridData gridData3 = new GridData(GridData.CENTER, GridData.CENTER, true, false);
    gridData3.horizontalSpan = 20;

    new Label(shell, SWT.NONE).setText("Todays Lines");
        lines = new List(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
        lines.setItems(new String[] { "OKC(+2.5) - MIA(-2.5)", "DAL(+8) - BOS(-8)" });
        int listHeight = lines.getItemHeight() * 12;
        trim = lines.computeTrim(0, 0, 0, listHeight);
        gridData3.heightHint = trim.height;
        lines.setLayoutData(gridData3);

    return shell;
}

}

问题是我在//Grid3 注释下创建了一个新标签。该标签粘在其上方的行上,而不是新的一行。我是 SWT 的新手,所以我知道这只是我缺乏知识。我将附上一张图片,以便您可以看到问题。

picture

您可以看到标签“Todays Lines:”不在它自己的行上。

任何帮助将不胜感激!

最佳答案

您多次分配文本的布局数据,首先分配给 new GridData(),然后分配给 gridData2。一次就够了。 新标签没有出现在新行上的原因是网格有 20 列,如 gridLayout.numColumns = 20; 设置的。 gridData2horizo​​ntalSpan = 5。如果您添加 3 个标签(默认跨 1 列)和三个跨 5 列的文本(根据 gridData2),则您想要在新行上显示的标签将出现在同一行的第 19 列中.

我建议为文本分配单独的 GridData 实例,并将要跨越的列数划分为 20(例如,最后一个跨越 7 列而不是 5 列),这样“今日行”将放置在下一行。

关于java - 如何将标签移动到新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14028738/

相关文章:

java - 如何在 Java 中创建特定位大小的随机输出?

Java 文件存在区分大小写的 .jpg 和 .JPG

java - SWT TableViewer 标题高度

fonts - 带有 Times-Roman 字体的 gnuplot 埃标签

c# - Windows 窗体 C# : Resize Label image on runtime when resizing the label

python - 在 kivy 中让标签淡出

java - 使用从 java 程序调用的 Windows 命令提示符将具有多个连续空格的字符串作为参数传递给 jar 文件

java - 在 Java 中初始化非数字变量

java - 在Win7上为SWT/RCP应用程序设置ApplicationId

java - 模拟 SWT 打印机