首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将SWT对象绑定到应用程序窗口的中心?

要将SWT对象绑定到应用程序窗口的中心,可以按照以下步骤进行操作:

  1. 获取应用程序窗口对象:在SWT中,可以使用Shell类表示应用程序窗口。可以通过创建一个Shell对象来表示应用程序窗口。
  2. 获取屏幕的尺寸:可以使用Display类的getDefault方法获取当前屏幕的默认显示对象,并通过getBounds方法获取屏幕的尺寸。
  3. 获取SWT对象的尺寸:可以使用SWT对象的getSize方法获取其尺寸。
  4. 计算居中位置:根据屏幕和SWT对象的尺寸,可以计算出SWT对象在窗口中居中显示的位置。通常可以使用以下公式计算:
代码语言:txt
复制

x = (screenWidth - objectWidth) / 2

y = (screenHeight - objectHeight) / 2

代码语言:txt
复制

其中,screenWidthscreenHeight分别表示屏幕的宽度和高度,objectWidthobjectHeight分别表示SWT对象的宽度和高度。

  1. 设置SWT对象的位置:可以使用SWT对象的setLocation方法将其位置设置为计算得到的居中位置。

以下是一个示例代码,展示了如何将SWT对象绑定到应用程序窗口的中心:

代码语言:java
复制
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class CenterSWTObject {
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);

        // 设置窗口的标题和大小
        shell.setText("My Application");
        shell.setSize(400, 300);

        // 获取屏幕的尺寸
        Rectangle screenBounds = display.getBounds();
        int screenWidth = screenBounds.width;
        int screenHeight = screenBounds.height;

        // 获取SWT对象的尺寸
        int objectWidth = 200;
        int objectHeight = 150;

        // 计算居中位置
        int x = (screenWidth - objectWidth) / 2;
        int y = (screenHeight - objectHeight) / 2;

        // 设置SWT对象的位置
        shell.setLocation(x, y);

        // 显示窗口
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }
}

在这个示例中,我们创建了一个Shell对象表示应用程序窗口,并设置了窗口的标题和大小。然后,通过获取屏幕的尺寸和SWT对象的尺寸,计算出SWT对象在窗口中居中显示的位置,并使用setLocation方法将其位置设置为计算得到的居中位置。最后,通过调用open方法显示窗口,并在窗口关闭前循环处理事件。

请注意,这只是一个示例代码,具体的实现方式可能因为应用程序的需求而有所不同。在实际开发中,可以根据具体情况进行调整和优化。

关于SWT和其他相关概念的详细信息,可以参考腾讯云的官方文档和相关产品介绍页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 可视化(番外篇)——SWT总结

    创建一个或者多个Shell对象,你可以认为Shell代表了程序窗口。 (3).      在Shell内创建各种部件(widget) (4).     ...基础类,负责在应用程序和本地操作系统之间建立交互;   一般一个应用程序只要一个Display即可,其用于启动一个专有的线程,将执行事件循环,并且保持UI线程。   ...Shell是显示在桌面上窗口。可以是顶级窗口或是对话框。   ...一个应用程序中可以创建一个或多个Shell   3.基本组件介绍   Widget:窗口小部件,Widget类是各种用户界面元素如按钮、列表、数和菜单整个继承体系父类,抽象类   Controls和Composites...selectAll、显示设置选取文本showSelection、取消所有选择clearSelection、将选取字符串复制剪贴板copy等   List(列表框):SWT.SINGLE(默认只能选中一个

    1.7K100

    【插件开发】—— 4 SWT编程须知

    关于SWT里面Display与Shell之间关系   Eclipse插件开发程序大多有个不成文规定,一个程序活动期间,只能有一个Dispaly对象,但是可以有多个Shell对象。...这里红色箭头显示就是一个Display,也就是一个底层应用实例。如果这个实例没有被销毁,而程序意外停止了,那么是不能重新运行。也就是说,运行期间,一个应用程序,只能有一个Display。...就像显示器与窗口内容,只有一个显示器,但是显示器内部可以显示多个文件内容。   ...可以通过引入方式,引入工程中。   其实只需要swtx86这个jar包就可以了,source是源代码,可以让我跟踪调试swt源码。 ?...便于继承窗口抽象类   为了后面的测试使用,这里可以把这段代码进行提取。这样之后main函数类只要继承这个AbstractExample就可以进行窗口编辑了。

    1.1K50

    SWT】常用代码(二)

    前言:窗口事件 很多桌面应用程序与用户交互都是通过事件机制来实现,如鼠标键或键盘被按下或 者释放。事件通过监听器通知应用程序哪个部件发生了什么动作,然后作出相应反应。...org.eclipse.swt.events 包中包含了所有的 SWT 专用事件类和监听器接口。...当触发此按钮时,将调用监听器 widgetSelected()方法,此时 SelectionListener 对象(这里定义为 new SelectionListener())将事件作为该方法参数传入...; } }); SWT窗口组件与SWT世间对应表: 二:无类型事件  SWT 提供了无类型(UnType)监听器,它通过调用它 handleEvent()方法来获知事件 (HandleEvent...用 addListener (int eventType, Listener listener)增加一个监听器一个监听器集合,当触发了指定类型事件时, 监听器通过 handleEvent()来获知事件

    9810

    jface databinding(数据挷定)中数据转换(IConverter)和数据验证(IValidator )

    我们以一个Text文本框为例,来说明如果将一个文本框内容与一个POJO对象属性进行绑定。 如下图,一个简单对话框中有一个Text文本框, ?...然后会出现这样界面,让我们选择要绑定数据对象,在本例中数据对象类型是TestBinding.Configurtion,变量名是editorConfig,要绑定属性是globalAspectRatio...数据转换和数据验证 如果数据挷定两个对象属性类型是一样,那上面的工作就算完成了。 但如果类型不同,就需要涉及数据类型转换和数据验证技术了。...IDialogConstants.OK_ID).setEnabled(ok); }} }); // 调用bindValue完成Text.text数据对象...当验证失败,数据对象绑定属性不会被更新。 说明: 本例中只是实现了Text组件向Configuration类Float类型属性单向数据同步。

    90510

    jface databindingPojoBindable实现对POJO对象支持

    所以UI组件与POJO对象之间建立数据绑定是单向,UI组件数据变化可以同步POJO对象,但反过来不行。...下面这个示例可以演示这个区别, 运行程序,程序启动时,Text组件内容被更新成POJO对象属性相同值。 但按”测试”按钮,修改了POJO对象属性,但Text控件值并没有同步变化。...Text组件内容双向同步绑定。...PojoBindable 上面这个方案已经实现了数据对象和UI组件双向同步更新,但缺点就是需要对POJO对象进行改造,当项目中有多个POJO对象需要实现与UI组件双同步更新时,这个工作量也是挺大。...提供了一个途径让开发者在不修改自己POJO类代码情况下让POJO对象拥有完整数据绑定能力。

    53210

    GEF入门实例_总结_04_Eclipse插件启动流程分析

    一、前言 本文承接上一节:GEF入门实例_总结_03_显示菜单和工具栏 注意app目录下6个类文件。 ?...三、6个类文件作用  这六个类文件作用如下: 序号 类名 作用 1 Application RCP应用程序入口 2 ApplicationWorkbenchAdvisor 负责应用程序生命周期管理...这时,应用程序开始处理用户鼠标单击、移动、按键等各种事件,一直到用户关闭程序退出,这就是所谓事件循环。...每个应用程序都需要一个WorkbenchWindowAdvisor 来控制窗口界面的UI元素。          开发人员可以控制窗口创建时(或其他生命周期时)大小、标题、位置等。...,会执行 Application start 方法中来。

    1.1K40

    jface databinding:使用CheckboxTableViewer实现表中(Set)对象与CheckTable中选中条目数据绑定

    上一篇博文《jface databinding:可多选widget List组件selection项目与java.util.List对象双向数据绑定》讲述了如何实现List组件多选项与List数据绑定问题...经过比对,还是觉得用checkTable来实现比较好, 如下图,左上是一个Table组件(CHECK),勾选不同名字,希望数据对象(ObservableSet)内容也同步改变,显示在下面的Label...要实现这个需求,用jface提供JFace Viewers实现数据绑定非常方便,JFace Viewers为Table,Tree等复杂组件提供了一个方便开发框架,如下图对于每一种复杂组件都有对应Viewer...,input变化会同步Table中 checkboxTableViewer.setInput(input); // 创建数据绑定上下文 DataBindingContext..., null); // 将observableSet内容绑定Label组件,当observableSet内容变化时,lblSelected显示会自动更新 ISideEffect.create

    1.7K100

    java SWT:TraverseEvent理解塈添加TraverseListener实现Composite之间TAB键切换焦点

    当在Canvas中按下TAB键时, TraverseEvent#detail字段值是SWT.TRAVERSE_TAB_NEXT ,TraverseEvent#doit 字段值是false,这时系统默认行为不会将这个...TAB键理解为用户是想将焦点设置下一个widget,这就意味着在Canvas中按键侦听器(key Listener)将会收到用户敲TAB键(SWT.TAB)—所以默认情况下,用TAB键是无法在widget...如果要想让Composite对象支持TAB键在组件间移动焦点,就要改变系统对TAB键行为,修改TraverseEvent#doit 字段值为true 下面是org.eclipse.swt.widget.Control...; } TraverseListener侦听器 如何将doit置为true呢?...键理解》 《org.eclipse.swt.events.TraverseEvent》 《SWT/JFace 按键、事件、监听》

    81310

    使用windowbuilder插件开发图形界面

    先介绍一下JFrame与Frame窗口区别:   JFrame窗口是自带默认有一个Panel容器,Frame窗口则是没有的,它们默认布局都是边界布局。...菜单栏对象、菜单项与菜单子项: ? 在窗口最上面的这一排选项就是菜单栏,想在窗口上添加菜单栏,首先使用菜单栏类JMenuBar构建出菜单栏对象,才能往里面添加其他组件。  ...构建出对象后,再使用JMenu菜单项类构建出菜单项对象,然后使用菜单栏对象访问add();方法把构建出来菜单项对象添加上去。接着使用窗口对象访问setJMenuBar();方法把菜单栏对象设置一下。...JMenuItem是菜单子项类,先使用这个类构建出菜单子项对象就可以将这个对象添加进菜单项里了。代码示例: ? ? 运行效果: ? 安装SWT插件: 什么是SWT?...在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit).AWT框架底层使用原生窗口部件(native widgets)构建,只能使用各个平台窗口部件子集

    1.4K10

    SWT】常用代码(三)

    Shell 类  Shell 是一种框架或窗口复合控件,它有一个作为父控件 Display,这通常也是默认 设置。...SWT 支持两种不同 Shell 类型:一是用于实现主窗口顶级 Shell;二是用于实现对话 框 Shell。...)、Shell(Shell parent int style)传入是 Shell 类对象,创建一个对话框,其他几种构造方法传入是 Display 类对象,将会创建 一个顶级 shell 窗口...close()请求窗口管理器关闭接收者(这里指 Shell 窗体),窗口关闭方式与用户单击 “关闭框”或执行其他平台特定按键和鼠标的组合,来指示应该被移出窗口。...forceActive()强制窗口管理器激活 Shell 窗口。 getBounds()返回用矩形表示窗体区域。 dispose()释放与接收者以及与其相关联子类操作系统资源。

    13910

    Java SWT事件

    点击鼠标是一个事件,按下一个按钮也一个事件,关闭一个窗口也是一个事件。 什么是监听器?监听器就是监听事件什么时候发生,用来控制事件发生具体动作。...(个人见解) 事件产生处SWT组件称为事件源,(官方) 对事件作出具体动作称为监听器(Listener)。监听器负责监听组件上事件,并对发生事件进行处理。...SWT 常用事件 每一种类型监听器,都有一个接口来定义这种监听器,由类提供事件信息,由应用程序接口方法负责添加监听器。...SWT 常用监听器应用实例 鼠标监听器,监听鼠标双击事件。...; //在text中显示信息 //声明信息对话框对象,并在对话框中显示信息 MessageBox dialog=new MessageBox(shell,SWT.OK|SWT.ICON_INFORMATION

    2K50

    jface databinding:可多选widget List组件selection项目与java.util.List对象双向数据绑定

    需求说明 如下图,一个可多选List组件,初始表有3个值,希望实现与一个java.util.List对象(保存选中值)双向数据绑定。...当List组件中选中内容变化时,java.util.List对象内容也同步变化。 ?...实现Observable对象 我们知道,org.eclipse.jface.databinding.swt.WidgetProperties工厂类items()方法中为CCombo、Combo、List...提供了获取表中所有条目(item)observable对象,但是这个observable对象关注是表中所有条目而不是选中条目。...null, null); // 为查看数据对象observableList内容,将之与Label组件进行单向绑定, // observableList内容变化能及时显示在

    87980

    曾经是“杀手级”桌面语言,Java桌面开发为何走向衰落?

    另外,在亲自尝试了一些 WebStart 应用程序之后,我发现它表现也就那样。应用程序打开速度还是慢,因为启动后需要先下载更新;这些程序也没有被正确集成操作系统当中。...所以乍看之下,长久难题似乎终于有了答案。 SWT 优势在于无需自行绘制小部件,而仅仅是为了平台本机小部件提供绑定,因此由它构建应用程序在观感上原生度更高、响应速度也更快。...遗憾是,大多数 Swing 应用程序开发者并没有遵循 Mac UI 指南,所以用户在使用 Java 应用程序还是能感觉事情“不太对劲”。...开发者必须自行创建窗口和菜单,除非直接套用框架——但我从没见过能纯原生 Mac 应用程序体验 Java 框架。 但苹果总有办法,他们更进一步、为 Coca 提供了 Java 绑定包。...而且要实现从 Cocoa Java 对接,开发者必须能熟练地将 Objective-C 代码转换成 Java 中等价表示——相当累人。

    1.6K20

    jface databinding:部分实现POJO对象监测

    》中,已经知道直接对POJO对象进行修改,是不能被绑定UI组件知道,在上一篇文章中虽然说到PojoBindable这个项目可以解决这个问题,但这个项目并不成熟,所以我没有采用这个方案,而且如果要改造所有的...冷静回头再看相关资料并做了一些试验,发现原来IObservableValue对象本身就有setValue方法用于修改被监控对象值,而且会通知观察对象。...POJO对象数据监控了吗?...关键是在我这个项目里这样做成本并不高,只是后续要改变一下对POJO对象访问方式而已。...)}实现对POJO对象进行访问 * 当调用 {@link #setValue(String, Object)}改变对象属性值时,会自动通知监控对象 * * 这里将普通Java

    44010
    领券