将 abel 包裹在复合材料中

2024-03-02

I have ScrolledComposite只允许垂直滚动。 (heighthint = 400).

在这个 ScrolledComposite 中,我还有另一个CompositeA(滚动高度可能超过 400)来存储所有其他小部件。

我有一个很长的标签(带有SWT.WRAP已启用)。但它不是换行,而是始终显示在一行中。我希望这个标签根据其父级的宽度换行(CompositeA)

我忘了补充一点CompositeA是 2 列GridLayout with makeColumnsEqualWidth = true.

这是我的代码:

public void createPartControl(Composite parent) {
    // TODO Auto-generated method stub

    Display display = parent.getDisplay();

    toolkit = new FormToolkit(display);
    form = toolkit.createForm(parent);
    form.setText("ABC");

    Composite body = form.getBody();

    TableWrapLayout layout = new TableWrapLayout();
    layout.numColumns = 2;
    body.setLayout(layout);

    Label header1 = toolkit.createLabel(body, "ABC: ");
    Font font = new Font(display, "Arial", 11, SWT.BOLD);
    header1.setFont(font);

    Label header2 = toolkit.createLabel(body, "XYZ",
            SWT.WRAP);
    font = new Font(display, "Arial", 11, SWT.NONE);
    header2.setFont(font);

    TableWrapData wd = new TableWrapData(TableWrapData.FILL_GRAB);      
    header2.setLayoutData(wd);

    form.getBody().setBackground(
            form.getBody().getDisplay()
                    .getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));

    // Scrolled composite
    ScrolledComposite sc = new ScrolledComposite(body, SWT.BORDER_SOLID
            | SWT.V_SCROLL);
    sc.setAlwaysShowScrollBars(true);
    sc.setBackground(new Color(display, 50,255,155));


    wd = new TableWrapData(TableWrapData.FILL); 
    wd.heightHint = 360;
    wd.colspan = 2;
    wd.grabHorizontal = false;
    sc.setLayoutData(wd);

    sc.setLayout(new TableWrapLayout());

    Composite innerComposite = toolkit.createComposite(sc);
    sc.setContent(innerComposite);

    innerComposite.setLayout(new TableWrapLayout());
    innerComposite.setBackground(new Color(display, 255,50,50));

    Section section = toolkit.createSection(innerComposite,
            Section.DESCRIPTION | Section.TITLE_BAR | Section.EXPANDED);
    wd = new TableWrapData(TableWrapData.FILL);
    wd.maxWidth = 600; // don't want to hardcode this value

    section.setLayoutData(wd);
    section.setText("Section");
    section.setDescription("A not so long description......................");

    // Composite for Section
    Composite sectionClient = toolkit.createComposite(section);
    layout = new TableWrapLayout();
    layout.numColumns = 2;
    layout.makeColumnsEqualWidth = true;
    sectionClient.setLayout(layout);

    toolkit.createButton(sectionClient, "Button 1", SWT.RADIO);

    Label rightDesc = toolkit
            .createLabel(
                    sectionClient,
                    "A very long long long long long long long long long long long long long long long long long long long long desc that needs wrapping",
                    SWT.WRAP);
    font = new Font(display, "Arial", 10, SWT.ITALIC);
    rightDesc.setFont(font);
    wd = new TableWrapData();
    wd.rowspan = 2;
    rightDesc.setLayoutData(wd);

    Combo comboDropDown = new Combo(sectionClient, SWT.DROP_DOWN
            | SWT.BORDER);
    comboDropDown.setText("DDL");
    comboDropDown.add("1");
    comboDropDown.add("2");
    comboDropDown.add("3");

    Label lineBreak = toolkit.createSeparator(sectionClient, SWT.SEPARATOR
            | SWT.HORIZONTAL);
    wd = new TableWrapData(TableWrapData.FILL);
    wd.colspan = 2;
    lineBreak.setLayoutData(wd);

    /***********************/

    toolkit.createButton(sectionClient, "Button 2", SWT.RADIO);

    Label rightDesc2 = toolkit
            .createLabel(
                    sectionClient,
                    "A long long long long long long long long long long long long long long long long long long long long desc that needs wrapping",
                    SWT.WRAP);
    font = new Font(display, "Arial", 10, SWT.ITALIC);
    rightDesc2.setFont(font);
    wd = new TableWrapData(TableWrapData.FILL);
    wd.rowspan = 3;
    rightDesc2.setLayoutData(wd);

    toolkit.createLabel(sectionClient, "Desc",
            SWT.WRAP);
    toolkit.createText(sectionClient, "hello world", SWT.NONE);

    section.setClient(sectionClient);

    innerComposite.pack();

}

如果运行它,您可以看到绿色滚动复合材料和红色复合材料。我希望红色复合宽度相对地填充到滚动复合的宽度,而不需要硬编码maxWidth = 600.


我在布局中遇到同样的问题并发现this http://book.javanb.com/swt-the-standard-widget-toolkit/ch15lev1sec12.html有用的答案。

因为“这不是一个错误,而是一个功能”,请尝试评论 #19 中的这个答案here https://bugs.eclipse.org/bugs/show_bug.cgi?id=9866.

我将以下代码行用于我的标签。

Label tip = new Label(shell, SWT.WRAP | SWT.BORDER | SWT.LEFT);
final GridData data = new GridData(SWT.HORIZONTAL, SWT.TOP, true, false, 1, 1);
tip.setLayoutData(data);
tip.setText("Here stands my long, long and much more longer text...");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 abel 包裹在复合材料中 的相关文章

  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树

随机推荐

  • 如何在多个子网上运行AWS EMR集群?

    目前 我们正在使用 EMR 中的 config json 文件创建实例来配置集群 此文件指定子网 Ec2SubnetId ALL我的 EMR 实例最终使用此子网 如何让它使用多个子网 这是我推送到 S3 的 terraform 模板 App
  • React-Google-Map 多个信息窗口打开

    我目前正在使用react google maps构建一个谷歌地图API 我想创建多个标记来在信息窗口上显示世界各地城市的信息 但由于它们都是来自 html 对象 每当我单击一个标记时 所有信息窗口都会打开 如果有办法解决这个问题吗 示例代码
  • Capybara 使用正则表达式匹配元素 id

    我正在使用Cocoon https github com nathanvda cocoongem 在 Rails 中构建嵌套表单 该 gem 为每个重复的表单元素分配一个随机数 以便区分它们 例如 id challenge events a
  • 查找批处理文件中文件的修改日期是否早于 N 小时,如果不是则发送电子邮件

    我认为这篇文章正是我正在寻找的 在批处理文件中查找文件是否早于 4 小时 https stackoverflow com questions 6928552 find out if file is older than 4 hours in
  • Android 上的 Java 对象在内存中是如何布局的?

    我对 HotSpot 中堆上对象的布局相当熟悉 但对 Android 不太熟悉 例如 在 32 位 HotSpot JVM 中 堆上的对象被实现为 8 字节标头 后面是对象的字段 一个字节表示boolean 四个字节用于引用 其他所有内容均
  • 在单独的线程上分派托管 Win32 WndProc

    我正在通过非托管创建一个窗口CreateWindowEx使用 PInvoke 作为服务器来进行调度SendMessage来自不同进程的调用 这应该包裹在一个同步函数 类注册 窗口创建 像这样 public bool Start if Run
  • 创建连接文件的最佳实践

    我有一个应用程序 其中有一些缓存 队列和数据库的配置文件 public class ServerConfiguration ConfigurationSection ConfigurationProperty FOO DefaultValu
  • 使用 State 和 IO 的堆叠 monad 时,在流程中停止理解

    在这个 Scala 示例中 当结果为以下时我需要停止StopNow 我需要在打电话后执行此操作decisionStep 我怎样才能做到这一点 case class BusinessState trait BusinessResult cas
  • 比较文件名

    我想比较两个不同文件夹中的文件 我只想比较这两个不同文件夹中具有相同名称的文件 我想做的是比较一个软件的两个不同版本并找出有多少文件被更改 这将帮助您获取两个路径的文件 import java io File import java uti
  • 为什么 python webassets pyscss 不能在调试模式下从 scss 文件重新生成 css?

    我在 python webassets 库中使用 pyscss 编译器 并将 webassets 调试配置全部设置为 true 但是 当我对 scss 文件进行更改并重新加载包含生成的 css 文件的页面时 我发现 css 文件尚未重新生成
  • int main() { } (不带“void”)在 ISO C 中有效且可移植吗?

    C 标准指定了两种形式的定义main为一个 托管实施 int main void and int main int argc char argv 它可以以与上述 等效 的方式定义 对于 例如 您可以更改参数名称 替换int通过 typede
  • 查询客户交易数据

    我正在构建一个类似于个人理财的应用程序 为此 我需要获取有关该客户交易的信息 我设法运行了获取基本个人数据 https developer paypal com docs classic permissions service integr
  • 带中缀表示法的点自由样式

    您好 有没有办法在使用中缀表示法时编写点自由样式 f Int gt Int gt Int gt Int f a b a b 为什么你不能做这样的事情 f Int gt Int gt Int gt Int f a b a b or f a b
  • 使用 control.begininvoke 后 UI 仍然没有响应

    我制作了一个 C winforms 应用程序 现在我有一个带有很多按钮的表单 这些按钮调用大量的数字运算函数 其输出在文本框中更新 我调用 textbox begininvoke 方法 将委托传递给更新文本框中文本的函数 但是当文本很大时
  • 无法在单用户模式下启动sql server

    我正在尝试恢复我的本地 sql server sa 密码 我读到应该将其置于单用户模式 我就这样做了 我添加了 m 到启动参数 我没有运行 sql 代理 我重新启动了 Sql Server 当我尝试时 sqlmd S sqlexpress
  • Ruby on Rails 中的模型关系

    我正在 Rails 3 中开发一个新应用程序 但我不确定如何建立模型之间的关系 基本上我有一个model User and a model Project 用户可以创建项目 成为项目所有者 但除项目所有者之外的任何其他用户也可以加入该项目
  • 如何检查数组中的非零值(元素)

    我想知道如何编写一个函数来返回是否至少有三个值不等于 0 我搜索过类似的问题 但找不到任何有效的解决方案 为了解释我的问题 这里有一个例子 我有一个包含这些元素的数组 1 0 2 0 4 0 0 3 0 0 我想检查是否至少有 3 个元素不
  • file.read()、file.readline() 和迭代文件对象之间的区别[重复]

    这个问题在这里已经有答案了 我是计算机科学的新手 正在尝试在 python 中创建一个函数来打开我的计算机上的文件 我知道这个函数f readline 将当前行作为字符串抓取 但是这些函数的作用是什么f read and for line
  • Python - 将日期的字符串表示形式转换为 ISO 8601

    在Python中 如何转换这样的字符串 2010 年 12 月 16 日星期四 12 14 05 0000 为 ISO 8601 格式 同时保留时区 请注意 原始日期是字符串 输出也应该是字符串 而不是datetime或类似的东西 不过 我
  • 将 abel 包裹在复合材料中

    I have ScrolledComposite只允许垂直滚动 heighthint 400 在这个 ScrolledComposite 中 我还有另一个CompositeA 滚动高度可能超过 400 来存储所有其他小部件 我有一个很长的标