gpt4 book ai didi

java - SWT:垂直分隔符太高;横向太短; table 太窄

转载 作者:行者123 更新时间:2023-11-29 08:09:22 25 4
gpt4 key购买 nike

我是一名 SWT 新手,在调整我的 UI 以使其看起来像我想要的那样时遇到了一些麻烦。考虑以下从 SWT 片段拼凑而成的代码:

    Display.setAppName("App Name");

Display display = new Display();

Shell shell = new Shell(display);
GridLayout shellLayout = new GridLayout();
shellLayout.numColumns = 1;
shell.setLayout(shellLayout);

Group group = new Group(shell, SWT.DEFAULT);
RowLayout groupLayout = new RowLayout();
group.setLayout(groupLayout);

for (int i = 0; i < 3; i++)
new Button(group, SWT.PUSH).setText("ABC" + i);

new Label(group, SWT.SEPARATOR | SWT.VERTICAL);

for (int i = 0; i < 3; i++)
new Button(group, SWT.PUSH).setText("ABC" + i);

new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);

Table table = new Table(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
table.setLinesVisible(true);
table.setHeaderVisible(true);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
table.setLayoutData(gridData);

for (String title : new String[] { "A", "B", "C", "D", "E", "F", "G" })
new TableColumn(table, SWT.NONE).setText(title);

for (int i = 0; i < 128; i++) {
TableItem item = new TableItem (table, SWT.NONE);
item.setText(0, "123");
item.setText(1, "234");
item.setText(2, "345");
item.setText(3, "456");
item.setText(4, "567");
item.setText(5, "678");
item.setText(6, "789");
}

for (TableColumn column : table.getColumns())
column.pack();

shell.pack();
shell.open();

while (shell.isDisposed() != true)
if (display.readAndDispatch() != true)
display.sleep();

display.dispose();

运行时,结果显示有以下问题:

  1. 垂直分隔符的“高度”大约是按钮的两倍。网格布局中的顶行如下所示:
ABC1 ABC2 ABC3 | ABC1 ABC2 ABC3               |

我想让分隔符只和按钮一样高。

  1. 水平分隔符大约是屏幕宽度的 1/10。如何让它扩展到网格中行的整个宽度?

  2. 表格的列仅与其包含的文本一样宽。这会导致表格的宽度约为窗口宽度的 1/2。我希望表格的宽度(以及通过扩展列的宽度)增长和缩小以匹配窗口的宽度。任何一点都可以为我指明如何实现这一目标的正确方向吗?

最佳答案

横向标签需要被告知抢占更多空间;

Label temp = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
temp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

对 column.pack() 的调用改变了列宽以匹配数据。如果您想将它们设置为明确的大小,您需要实际设置 Column 对象的属性,而不是仅仅使用新 Column 创建它们。让所有列随窗口和表格动态调整大小需要为表格编写一个 ResizeListener。否则,无论表格大小如何,列往往会保持不变。

关于java - SWT:垂直分隔符太高;横向太短; table 太窄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com