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

📄 customitem.java

📁 j2me polish学习的经典代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
 * <code>CustomItem</code>, that is, the implementation * may temporarily delegate the * responsibility for traversal to the item itself.  Even if there is only one * traversal location inside the <code>CustomItem</code>, * the item may want support the * internal traversal protocol so that it can perform specialized * highlighting, animation, etc. when the user has traversed into it.</p> *  * <p>The implementation indicates its support for traversal internal to a * <code>CustomItem</code> by setting one or both of the * <code>TRAVERSE_HORIZONTAL</code> or * <code>TRAVERSE_VERTICAL</code> bits in the value returned by * <code>getInteractionModes()</code>. If * neither of these bits is set, the implementation is unwilling to let * <code>CustomItems</code> traverse internally, or the * implementation does not support * traversal at all.  If the implementation does support traversal but has * declined to permit traversal internal to <code>CustomItems</code>, * the implementation * will supply its own highlighting outside the * <code>CustomItem's</code> content area.</p> *  * <p>The <code>CustomItem</code> need not support internal * traversal at all.  It can do * this by returning <code>false</code> to the initial call to the * <code>traverse</code> method.  (This is the default behavior if this method * hasn't been overridden by the <code>CustomItem</code>.) * If this occurs, the system must * arrange for the user to be able to traverse onto and past this item.  The * system must also arrange for proper scrolling to take place, particularly * if the item exceeds the height of the screen, regardless of whether * internal traversal is occurring.</p> *  * <p>An implementation may provide support for delivering keypad or pointer * events to <code>CustomItems</code> even if it has declined * to support delivering traverse events to <code>CustomItems</code>. * If an implementation provides support for * delivering keypad or pointer events to <code>CustomItems</code>, * it must provide a means * to do so for every <code>CustomItem</code>, even for those * that have refused internal * traversal by returning <code>false</code> to the initial * <code>traverse()</code> call. * This implies that such implementations must still support some notion * of focus for an item, even if that item is not supporting internal * traversal.</p> *  * <p>See the documentation for the * <A HREF="../../../de/enough/polish/ui/CustomItem.html#traverse(int, int, int, int[])"><CODE>traverse</CODE></A> method for a full * specification of the behavior and responsibilities required for the item to * perform internal traversal.</p> *  * <h2>Item Appearance</h2> *  * <p>The visual appearance of each item consists of a * label (handled by the implementation) * and its contents (handled by the subclass).</p> *  * <p>Labels are the responsibility of the implementation, not the item.  The * screen area that is allocated to the <code>CustomItem</code> * for its contents is * separate from the area that the implementation uses to display the * <code>CustomItem's</code> label. * The implementation controls the rendering of the label * and its layout with respect to the content area.</p> *  * <p>The <code>CustomItem</code> is responsible for * painting its contents whenever * the <code>paint</code> method is called.</p> *  * <p>The colors for foreground, background, highlighted foreground, * highlighted background, border, and highlighted border should be * retrieved from <A HREF="../../../javax/microedition/lcdui/Display.html#getColor(int)"><CODE>Display.getColor(int)</CODE></A>. * This will allow <code>CustomItems</code> to * match the color scheme of other items provided with the device. * The <code>CustomItem</code> is responsible for keeping * track of its own highlighted and * unhighlighted state.</p> *  * <p>The fonts used should be retrieved from  * <A HREF="../../../javax/microedition/lcdui/Font.html#getFont(int)"><CODE>Font.getFont(int)</CODE></A>. * This will allow them to match the fonts used by other items * on the device for a consistent visual appearance. </p> * <HR> *  *  * @since MIDP 2.0 */public abstract class CustomItem extends Item{	/**	 * Interaction mode bit indicating support of horizontal traversal	 * internal to the <code>CustomItem</code>.	 * 	 * <p><code>TRAVERSE_HORIZONTAL</code> has the value <code>1</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#traverse(int, int, int, int[])"><CODE>traverse(int, int, int, int[])</CODE></A></DL>	 * 	 */	protected static final int TRAVERSE_HORIZONTAL = 1;	/**	 * Interaction mode bit indicating support for vertical traversal	 * internal to the <code>CustomItem</code>.	 * 	 * <p><code>TRAVERSE_VERTICAL</code> has the value <code>2</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#traverse(int, int, int, int[])"><CODE>traverse(int, int, int, int[])</CODE></A></DL>	 * 	 */	protected static final int TRAVERSE_VERTICAL = 2;	/**	 * Interaction mode bit indicating support for key pressed events.	 * 	 * <p><code>KEY_PRESS</code> has the value <code>4</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#keyPressed(int)"><CODE>keyPressed(int)</CODE></A></DL>	 * 	 */	protected static final int KEY_PRESS = 4;	/**	 * Interaction mode bit indicating support for key released events.	 * 	 * <p><code>KEY_RELEASE</code> has the value <code>8</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#keyReleased(int)"><CODE>keyReleased(int)</CODE></A></DL>	 * 	 */	protected static final int KEY_RELEASE = 8;	/**	 * Interaction mode bit indicating support for key repeated events.	 * 	 * <p><code>KEY_REPEAT</code> has the value <code>0x10</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#keyRepeated(int)"><CODE>keyRepeated(int)</CODE></A></DL>	 * 	 */	protected static final int KEY_REPEAT = 0x10;	/**	 * Interaction mode bit indicating support for point pressed events.	 * 	 * <p><code>POINTER_PRESS</code> has the value <code>0x20</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#pointerPressed(int, int)"><CODE>pointerPressed(int, int)</CODE></A></DL>	 * 	 */	protected static final int POINTER_PRESS = 0x20;	/**	 * Interaction mode bit indicating support for point released events.	 * 	 * <p><code>POINTER_RELEASE</code> has the value<code> 0x40</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#pointerReleased(int, int)"><CODE>pointerReleased(int, int)</CODE></A></DL>	 * 	 */	protected static final int POINTER_RELEASE = 0x40;	/**	 * Interaction mode bit indicating support for point dragged events.	 * 	 * <p><code>POINTER_DRAG</code> has the value <code>0x80</code>.</p>	 * <DT><B>See Also: </B>	 * <A HREF="../../../de/enough/polish/ui/CustomItem.html#pointerDragged(int, int)"><CODE>pointerDragged(int, int)</CODE></A></DL>	 * 	 */	protected static final int POINTER_DRAG = 0x80;	/**	 * A value for traversal direction that indicates that traversal has	 * entered or has changed location within this item, but that no specific	 * direction is associated with this traversal event.	 * 	 * <p><code>NONE</code> has the value <code>0</code>.</p>	 * <DT><B>See Also: </B>	 * 	 * 	 */	protected static final int NONE = 0;	//#ifdef polish.hasPointerEvents		private static final int INTERACTION_MODES = KEY_PRESS | KEY_RELEASE | POINTER_PRESS | TRAVERSE_HORIZONTAL | TRAVERSE_VERTICAL;	//#else		//# private static final int INTERACTION_MODES = KEY_PRESS | KEY_RELEASE | TRAVERSE_HORIZONTAL | TRAVERSE_VERTICAL;	//#endif	//#if polish.css.skip-set-clip		protected boolean skipClipping;	//#endif	/** the font which is set in each paint() method */	private static final Font DEFAULT_FONT = Font.getDefaultFont();	private int[] visRect_inout = new int[4];	private int clipHeight;	private int clipWidth;	/**	 * Superclass constructor, provided so that the	 * <code>CustomItem</code> subclass can specify its label.	 * 	 * @param label the CustomItem's label	 */	protected CustomItem( String label)	{		this( label, null );	}	/**	 * Superclass constructor for J2ME Polish, provided so that the	 * <code>CustomItem</code> subclass can specify its label.	 * 	 * @param label the CustomItem's label	 * @param style the Style which is associated with this item	 */	protected CustomItem( String label, Style style )	{		super( label, PLAIN, INTERACTIVE, style );		this.visRect_inout = new int[4];	}		/**	 * Gets the game action associated with the given key code of the	 * device.  Returns zero if no game action is associated with this key	 * code.  See the	 * <a href="Canvas.html#gameactions">Game Actions</a>	 * section of class <code>Canvas</code> for further discussion	 * of game actions.	 * 	 * <p>The mapping of key codes to game actions may differ between	 * <code>CustomItem</code> and <code>Canvas</code>.</p>	 * 	 * @param keyCode the key code	 * @return the game action corresponding to this key, or 0 if none	 * @throws IllegalArgumentException if keyCode is not a valid key code	 */	public int getGameAction(int keyCode)	{		if (this.screen == null) {			this.screen = getScreen();			if (this.screen == null) {				return 0;			}		}		return this.screen.getGameAction(keyCode);	}	/**	 * Gets the available interaction modes.	 * <p>For J2ME Polish components following modes can be supported supported:	 * <pre>	 *   KEY_PRESS | KEY_RELEASE | KEY_REPEAT | POINTER_PRESS | TRAVERSE_HORIZONTAL | TRAVERSE_VERTICAL	 *  </pre></p>	 *  <ul>	 *    <li><code>POINTER_PRESS</code> is only supported on devices that support pointers.</li>	 *    <li><code>KEY_REPEAT</code> events are supported where the native Canvas implementation supports these events.</li>	 *    <li><code></code> .</li>	 *    <li><code></code> .</li>	 *  </ul>	 * This method is intended to be	 * called by <code>CustomItem</code> subclass code in order	 * for it to determine what	 * kinds of input are available from this device.  The modes available may	 * be dependent upon several factors: the hardware keys on the actual	 * device, which of these keys are needed for the system to do proper	 * navigation, the presence of a pointing device, etc.  See <a	 * href="#interaction">Interaction Modes</a> for further discussion.  If	 * this method returns <code>0</code>, the only interaction available	 * is through item commands.	 * 	 * @return a bitmask of the available interaction modes	 */	protected final int getInteractionModes()	{		Canvas canvas = getScreen();		if (canvas == null) {			canvas = StyleSheet.currentScreen;		}		if (canvas != null) {			if (canvas.hasRepeatEvents()) {				return INTERACTION_MODES | KEY_REPEAT;						} else {

⌨️ 快捷键说明

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