`
gdwrx_winson
  • 浏览: 131573 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SWT控件的CompositeSize

阅读更多

在Window上所有的元件都是用畫出來的,所以redraw的觀念應該沒什麼問題。 
如果你想自訂Control,這表示目前現有的元件已經無法提供你所要的功能。 
這也證明事情很大條,你必須要去用Graphic去畫一大堆Control的圖形,還要管理Mouse click時圖形要如何變化。光是畫這些圖你就已經很靠背了。 
而我之所以會去自訂元件是因為老子屌,不想用Window預設的圖形介面。 
(事實上根本是增加自己的麻煩,很白痴的做法)。 

所以,除非到山窮水盡的地步,不然不要幹這種事。 

自訂Control要注意以下幾點事項: 
1.繼承Composite。選擇繼承Composite就表示可能會有其它人繼承你的Control。 
2.繼承Canvas。選擇繼承Canvas就表示未來不會有人再繼承你的Control。 
3.覆寫(Override)computeSize()的方法,該方法形式如下: 

public Point computeSize(int wHint, int hHint, boolean changed); 

先說明一下此方法是作用。 
一般SWT Control,可以指定Size(尺寸)和Location(位置)。例如: 

SWTControl.setSize(100, 100); 
SWTControl.setLocation(10, 10); 

但是某些情況下,我們希望SWT Control的Size是能夠依照內容所佔的比例而自動設定,這時我自只要呼叫SWT Control的pack()方法。Control就會自動配置尺寸。 
請注意, SWT Control憑什麼自動判斷Control的尺寸 ? 
答案就是,SWT Control會去呼叫computeSize()來計算尺寸的大小。 
講到這裡你也應該很清楚computeSize()的作用。所以你之所以實作computeSize()方法,就是為了讓SWT Control能夠自動計算SWT Control的尺寸。 

再來先紹介參數(Parameter) 
wHint:此參數全名叫Width Hint,這樣你應該可以看出一點弊端。「寬度暗示」,也就是說,當你希望computeSize()計算之後的寬度(Width)能夠是自己指定的值,而不要經由computeSize()去計算,那麼你就可以指定你所想要的值。我猜你不知我在講三小,舉例說明比較容易: 

Point resultSize = SWTControl.computeSize(100, SWT.DEFUALT); 
System.out.println("Width:" + resultSize.x); 
System.out.println("Height:" + resultSize.y); 

得到的結果 

Width:100 // 因為這個是我所指定的值,所以computeSize()不會變更它 
Height:23 // 而這個結果是我未指定(設成SWT.DEFUALT),就會經過computeSize()計算出結果 

我想,智障也看的懂我想表達的東西,你再看不懂,也只好去撞牆了。 

hHint:同上。 
changed:這是為了快取而設的參數值。因為並不是每次SWT Control去呼叫computeSize()時,SWT Control的尺寸都會變更,有時候明明尺寸沒有變更,卻還要再去計算一次,那是一件很耗效能的事情。 
所以,當你接到的changed是true時,則表示尺寸已經變更,需要再重新計算一次。相對的,如果接到false,就表示尺寸沒變更,只要把上一次的結果值回傅回去就可以了,省下不必要的計算。

分享到:
评论

相关推荐

    Draw2D 模拟SWT控件之RadioButton、CheckedBox

    本文将深入探讨如何使用Draw2D模拟SWT中的RadioButton和CheckedBox控件,以及这些控件在实际应用中的作用和实现方式。 首先,RadioButton和CheckedBox是GUI中的两种常见选择控件。RadioButton通常用于提供一组互斥...

    java swt自定义控件

    本文将深入探讨在Java中使用SWT进行自定义控件的开发。 ### 1. SWT概述 SWT是一个开源的Java库,它的目标是提供与原生GUI库(如Windows的Win32 API,Mac OS的Cocoa,Linux的GTK+)类似的性能和功能。SWT使用JNI...

    SWT控件

    **SWT控件详解** SWT(Standard Widget Toolkit)是由Eclipse基金会开发并维护的一套用于构建图形用户界面(GUI)的开源库,它是Java语言中的一个GUI工具包,主要面向那些希望创建高性能、原生外观的应用程序的...

    Draw2D 模拟SWT控件之TextField、TextArea

    "Draw2D模拟SWT控件之TextField、TextArea"这个主题聚焦于使用Draw2D库来模仿SWT(Standard Widget Toolkit)中的两种基本输入控件:TextField和TextArea。SWT是Eclipse基金会的一个开源项目,用于构建原生外观的...

    Java使用SWT JFreeChart控件实现的小游戏.zip

    Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...

    SWT控件2

    标题“SWT控件2”指的是在软件开发中使用SWT(Standard Widget Toolkit)库创建用户界面时涉及的第二部分控件。SWT是Eclipse项目的一个组成部分,它提供了一套与操作系统直接交互的GUI(图形用户界面)控件,以实现...

    一个SWT日期时间选择控件类

    在给定的资源中,“SWT日期时间选择控件类”是一个专门为SWT环境设计的控件,使得开发者能够轻松地在Java应用中集成日期和时间选择功能,并且支持拖放操作,提高了用户体验。 这个控件类可能是基于SWT的`Combo`或`...

    SWT控件知识学习笔记

    ### SWT控件知识学习笔记 #### 一、SWT/JFace常用组件介绍 SWT (Standard Widget Toolkit) 是 Eclipse 平台的一个图形界面工具包,它提供了与平台无关的 GUI 组件,允许开发者构建高性能的应用程序。SWT/JFace ...

    SWT/JFace 自定义日历控件(可绑定注册到其他控件)

    SWT自带的DateTime控件属实不好用,而且无法绑定到其他控件上。因此自己写一个日历控件用着方便,功能大致如下: 1、日历控件可自定义设置常见的几种日期格式; 2、可以绑定注册到其他控件如:文本框、按钮、标签上...

    SWT日期时间选择控件.rar

    在这个“SWT日期时间选择控件.rar”压缩包中,包含的是一个针对SWT框架自定义封装的日期和时间选择器控件。这个控件允许用户方便地选取特定的日期和时间,提高了用户界面的交互性和用户体验。 在SWT中,虽然有基础...

    SWT 自定义控件

    ### SWT 自定义控件开发详解 #### 背景与需求 随着基于Eclipse平台的应用程序日益增多,开发者越来越依赖于SWT/JFace等提供的工具包来构建丰富的用户界面。然而,这些内置组件库虽然提供了大量的基础控件,但在特定...

    SWT 时间控件及执行bat文件

    在“SWT 时间控件及执行bat文件”这个例子中,我们将探讨如何使用SWT来创建时间选择控件,以及如何利用Java的TimerTask类进行定时任务,同时还会学习如何通过批处理(bat)文件运行Java应用程序。 1. SWT时间控件:...

    SWT/JFace 控件实例

    "SWT、JFace控件实例"这个压缩包可能包含了各种使用SWT和JFace创建的GUI示例,如按钮、文本框、列表、表格等控件的使用方法,以及对话框、视图和数据绑定的示例。这些实例对于初学者来说是非常宝贵的资源,因为它们...

    SWT日期控件

    在SWT中,虽然内建了一些基本的控件,但并没有内置日期选择器(date picker)组件。因此,为了在SWT应用中实现日期选择功能,通常会采用第三方库或插件来扩展这一功能,如"SWT 第三方 date picker RCP"。 这个描述...

    一款Eclipse的SWT插件

    它提供了一系列原生的控件,使得开发者能够创建与操作系统平台更加一致的用户界面。SWT是Eclipse IDE的底层GUI库,为Eclipse提供了强大的图形支持。 Eclipse是一款开源的集成开发环境(IDE),广泛应用于Java、C++...

Global site tag (gtag.js) - Google Analytics