⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tablecolumn.java

📁 源码为Eclipse开源开发平台桌面开发工具SWT的源代码,
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	checkWidget ();	int index = parent.indexOf (this);	if (index == -1) return 0;	int hwnd = parent.handle;	return OS.SendMessage (hwnd, OS.LVM_GETCOLUMNWIDTH, index, 0);}/** * Causes the receiver to be resized to its preferred size. * For a composite, this involves computing the preferred size * from its layout, if there is one. * * @exception SWTException <ul> *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> * </ul> * */public void pack () {	checkWidget ();	int index = parent.indexOf (this);	if (index == -1) return;	int hwnd = parent.handle;	TCHAR buffer = new TCHAR (parent.getCodePage (), text, true);	int headerWidth = OS.SendMessage (hwnd, OS.LVM_GETSTRINGWIDTH, 0, buffer) + 10;	if (image != null) {		int margin = 0;		if ((OS.COMCTL32_MAJOR << 16 | OS.COMCTL32_MINOR) >= (5 << 16 | 80)) {			int hwndHeader = OS.SendMessage (hwnd, OS.LVM_GETHEADER, 0, 0);			margin = OS.SendMessage (hwndHeader, OS.HDM_GETBITMAPMARGIN, 0, 0);		} else {			margin = OS.GetSystemMetrics (OS.SM_CXEDGE) * 3;		}		Rectangle rect = image.getBounds ();		headerWidth += rect.width + margin * 2;	}	if ((parent.style & SWT.VIRTUAL) != 0) {		if (image == null) {			OS.SendMessage (hwnd, OS.LVM_SETCOLUMNWIDTH, index, OS.LVSCW_AUTOSIZE_USEHEADER);		} else {			OS.SendMessage (hwnd, OS.LVM_SETCOLUMNWIDTH, index, headerWidth);		}			} else {		OS.SendMessage (hwnd, OS.LVM_SETCOLUMNWIDTH, index, OS.LVSCW_AUTOSIZE);		int columnWidth = OS.SendMessage (hwnd, OS.LVM_GETCOLUMNWIDTH, index, 0);		/*		* Bug in Windows.  When LVM_SETCOLUMNWIDTH is used with LVSCW_AUTOSIZE		* where each item has I_IMAGECALLBACK but there are no images in the		* table, the size computed by LVM_SETCOLUMNWIDTH is to small for the		* first column, causing long items to be clipped with '...'.  The fix		* is to increase the value by a small amount. 		*/		if (index == 0 && parent.imageList == null) columnWidth += 2;		if (headerWidth > columnWidth) {			if (image == null) {				OS.SendMessage (hwnd, OS.LVM_SETCOLUMNWIDTH, index, OS.LVSCW_AUTOSIZE_USEHEADER);			} else {				OS.SendMessage (hwnd, OS.LVM_SETCOLUMNWIDTH, index, headerWidth);			}		} else {			if (index == 0) {				OS.SendMessage (hwnd, OS.LVM_SETCOLUMNWIDTH, index, columnWidth);			}		}	}}void releaseChild () {	super.releaseChild ();	parent.destroyItem (this);}void releaseWidget () {	super.releaseWidget ();	parent = null;}/** * Removes the listener from the collection of listeners who will * be notified when the control is moved or resized. * * @param listener the listener which should be notified * * @exception IllegalArgumentException <ul> *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException <ul> *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> * </ul> * * @see ControlListener * @see #addControlListener */public void removeControlListener (ControlListener listener) {	checkWidget ();	if (listener == null) error (SWT.ERROR_NULL_ARGUMENT);	if (eventTable == null) return;	eventTable.unhook (SWT.Move, listener);	eventTable.unhook (SWT.Resize, listener);}/** * Removes the listener from the collection of listeners who will * be notified when the control is selected. * * @param listener the listener which should be notified * * @exception IllegalArgumentException <ul> *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li> * </ul> * @exception SWTException <ul> *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> * </ul> * * @see SelectionListener * @see #addSelectionListener */public void removeSelectionListener(SelectionListener listener) {	checkWidget ();	if (listener == null) error (SWT.ERROR_NULL_ARGUMENT);	if (eventTable == null) return;	eventTable.unhook (SWT.Selection, listener);	eventTable.unhook (SWT.DefaultSelection,listener);	}/** * Controls how text and images will be displayed in the receiver. * The argument should be one of <code>LEFT</code>, <code>RIGHT</code> * or <code>CENTER</code>. * * @param alignment the new alignment  * * @exception SWTException <ul> *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> * </ul> */public void setAlignment (int alignment) {	checkWidget ();	if ((alignment & (SWT.LEFT | SWT.RIGHT | SWT.CENTER)) == 0) return;	int index = parent.indexOf (this);	if (index == -1 || index == 0) return;	style &= ~(SWT.LEFT | SWT.RIGHT | SWT.CENTER);	style |= alignment & (SWT.LEFT | SWT.RIGHT | SWT.CENTER);	int hwnd = parent.handle;	LVCOLUMN lvColumn = new LVCOLUMN ();	lvColumn.mask = OS.LVCF_FMT | OS.LVCF_IMAGE;	OS.SendMessage (hwnd, OS.LVM_GETCOLUMN, index, lvColumn);	lvColumn.fmt &= ~OS.LVCFMT_JUSTIFYMASK;	int fmt = 0;	if ((style & SWT.LEFT) == SWT.LEFT) fmt = OS.LVCFMT_LEFT;	if ((style & SWT.CENTER) == SWT.CENTER) fmt = OS.LVCFMT_CENTER;	if ((style & SWT.RIGHT) == SWT.RIGHT) fmt = OS.LVCFMT_RIGHT;	lvColumn.fmt |= fmt;	OS.SendMessage (hwnd, OS.LVM_SETCOLUMN, index, lvColumn);}public void setImage (Image image) {	checkWidget();	if (image != null && image.isDisposed ()) {		error (SWT.ERROR_INVALID_ARGUMENT);	}	int index = parent.indexOf (this);	if (index == -1) return;	super.setImage (image);	int hwnd = parent.handle;	LVCOLUMN lvColumn = new LVCOLUMN ();	lvColumn.mask = OS.LVCF_FMT | OS.LVCF_IMAGE;	OS.SendMessage (hwnd, OS.LVM_GETCOLUMN, index, lvColumn);	if (image != null) {		lvColumn.fmt |= OS.LVCFMT_IMAGE;		lvColumn.iImage = parent.imageIndex (image);	} else {		lvColumn.fmt &= ~OS.LVCFMT_IMAGE;	}	OS.SendMessage (hwnd, OS.LVM_SETCOLUMN, index, lvColumn);}/** * Sets the resizable attribute.  A column that is * not resizable cannot be dragged by the user but * may be resized by the programmer. * * @param resizable the resize attribute * * @exception SWTException <ul> *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> * </ul> */public void setResizable (boolean resizable) {	checkWidget ();	this.resizable = resizable;}public void setText (String string) {	checkWidget ();	if (string == null) error (SWT.ERROR_NULL_ARGUMENT);	int index = parent.indexOf (this);	if (index == -1) return;	super.setText (string);	/*	* Bug in Windows.  For some reason, when the title	* of a column is changed after the column has been	* created, the alignment must also be reset or the	* text does not draw.  The fix is to query and then	* set the alignment.	*/	int hwnd = parent.handle;	LVCOLUMN lvColumn = new LVCOLUMN ();	lvColumn.mask = OS.LVCF_FMT;	OS.SendMessage (hwnd, OS.LVM_GETCOLUMN, index, lvColumn);	/* Set the column title */	int hHeap = OS.GetProcessHeap ();	TCHAR buffer = new TCHAR (parent.getCodePage (), string, true);	int byteCount = buffer.length () * TCHAR.sizeof;	int pszText = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount);	OS.MoveMemory (pszText, buffer, byteCount);	lvColumn.mask |= OS.LVCF_TEXT;	lvColumn.pszText = pszText;	int result = OS.SendMessage (hwnd, OS.LVM_SETCOLUMN, index, lvColumn);	if (pszText != 0) OS.HeapFree (hHeap, 0, pszText);	if (result == 0) error (SWT.ERROR_CANNOT_SET_TEXT);}/** * Sets the width of the receiver. * * @param width the new width * * @exception SWTException <ul> *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> * </ul> */public void setWidth (int width) {	checkWidget ();	int index = parent.indexOf (this);	if (index == -1) return;	int hwnd = parent.handle;	OS.SendMessage (hwnd, OS.LVM_SETCOLUMNWIDTH, index, width);}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -