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

📄 stacklayout.java

📁 源码为Eclipse开源开发平台桌面开发工具SWT的源代码,
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials  * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html *  * Contributors: *     IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.swt.custom;import org.eclipse.swt.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.widgets.*;/** * This Layout stacks all the controls one on top of the other and resizes all controls * to have the same size and location. * The control specified in topControl is visible and all other controls are not visible. * Users must set the topControl value to flip between the visible items and then call  * layout() on the composite which has the StackLayout. *  * <p> Here is an example which places ten buttons in a stack layout and  * flips between them: *  * <pre><code> * 	public static void main(String[] args) { * 		Display display = new Display(); * 		Shell shell = new Shell(display); * 		shell.setLayout(new GridLayout()); * 	 * 		final Composite parent = new Composite(shell, SWT.NONE); * 		parent.setLayoutData(new GridData(GridData.FILL_BOTH)); * 		final StackLayout layout = new StackLayout(); * 		parent.setLayout(layout); * 		final Button[] bArray = new Button[10]; * 		for (int i = 0; i &lt; 10; i++) { * 			bArray[i] = new Button(parent, SWT.PUSH); * 			bArray[i].setText("Button "+i); * 		} * 		layout.topControl = bArray[0]; * 	 * 		Button b = new Button(shell, SWT.PUSH); * 		b.setText("Show Next Button"); * 		final int[] index = new int[1]; * 		b.addListener(SWT.Selection, new Listener(){ * 			public void handleEvent(Event e) { * 				index[0] = (index[0] + 1) % 10; * 				layout.topControl = bArray[index[0]]; * 				parent.layout(); * 			} * 		}); * 	 * 		shell.open(); * 		while (shell != null && !shell.isDisposed()) { * 			if (!display.readAndDispatch()) * 				display.sleep();  * 		} 	 * 	} * </code></pre> */public class StackLayout extends Layout {	 	/**	 * marginWidth specifies the number of pixels of horizontal margin	 * that will be placed along the left and right edges of the layout.	 *	 * The default value is 0.	 */ 	public int marginWidth = 0;	/**	 * marginHeight specifies the number of pixels of vertical margin	 * that will be placed along the top and bottom edges of the layout.	 *	 * The default value is 0.	 */	public int marginHeight = 0; 	/** 	 * topControl the Control that is displayed at the top of the stack. 	 * All other controls that are children of the parent composite will not be visible. 	 */ 	public Control topControl;protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) {	Control children[] = composite.getChildren();		int maxWidth = 0;	int maxHeight = 0;	for (int i = 0; i < children.length; i++) {		Point size = children[i].computeSize(wHint, hHint, flushCache);		maxWidth = Math.max(size.x, maxWidth);		maxHeight = Math.max(size.y, maxHeight);	}		int width = wHint, height = hHint;	if (wHint == SWT.DEFAULT) width = maxWidth;	if (hHint == SWT.DEFAULT) height = maxHeight;	return new Point(width + 2 * marginWidth, height + 2 * marginHeight);}protected void layout(Composite composite, boolean flushCache) {	Control children[] = composite.getChildren();	Rectangle rect = composite.getClientArea();	rect.x += marginWidth;	rect.y += marginHeight;	rect.width -= 2 * marginWidth;	rect.height -= 2 * marginHeight;	for (int i = 0; i < children.length; i++) {		children[i].setBounds(rect);		children[i].setVisible(children[i] == topControl);				}}}

⌨️ 快捷键说明

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