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

📄 droplist.java

📁 最强手机阅读器Anyview3.0版的界面代码
💻 JAVA
字号:
package com.ismyway.fairyui;

import javax.microedition.lcdui.Graphics;

import com.ismyway.anyview.others.Settings;
import com.ismyway.util.ArrayList;
import com.ismyway.util.Theme;

public class DropList extends DisplayableBlock {
	private ArrayList items = new ArrayList();
	private int size = 60;
	private int selectedIndex = -1;
	private String selectedText = "";
	private ValueChangeListener itemListener = null;

	public DropList() {
		addCommand(EMPTY_CMD);
	}

	public DropList(String[] items) {
		this();
		for (int i = 0; null != items && i < items.length; i++) {
			this.items.add(items[i]);
		}
	}

	public void add(String item) {
		items.add(item);
	}

	public void clear() {
		items.clear();
	}

	public void delete(int index) {
		if (index > -1 && index < items.size()) {
			items.remove(index);
		}
	}

	public void setText(String text) {
		selectedText = text;
	}

	public String getText() {
		return selectedText;
	}

	public int getSelectedIndex() {
		return selectedIndex;
	}

	public ArrayList getItems() {
		return items;
	}

	public void paint(Graphics g, int adjustx, int adjusty) {
		int x, y, endy;
		x = getLeft() - adjustx;
		y = getTop() - adjusty;
		endy = y + getHeight();
		if (endy < 0) {
			return;
		}

		Theme.drawDropList(g, x, y, getWidth());

		int offx = getLeft() + 1 - adjustx, offy = getTop() + 1 - adjusty;
		int clipWidth = getWidth() - 2;

		g.setClip(offx, offy, clipWidth, 18);
		if (isSelected()) {
			Theme.drawSelectedBackground(g, offx, offy, clipWidth, 19);
		} else {
			g.setColor(Theme.Background);
			g.fillRect(offx, offy, clipWidth, 19);
		}

		offy = getTop() + (20 - getFont().getHeight()) / 2 - adjusty;
		if (isSelected()) {
			g.setColor(Theme.TextLight);
		} else {
			g.setColor(Theme.TextColor);
		}
		g.setFont(getFont());
		g.drawString(selectedText, offx + 2, offy, ANCHOR);
		Theme.drawArrow(g, Theme.Arrow, getLeft() + getWidth() - 9 - adjustx,
				getTop() - adjusty + 8, Theme.DOWN);
		restoreClip(g);
	}

	public void putInSequence(int[] rect, int width) {
		int height = 22;
		setInnerLeft(rect[0]);
		if (rect[3] > height) {
			setInnerTop(rect[1] + rect[3] - getFont().getHeight()
					- Settings.HORPADDING);
		} else {
			setInnerTop(rect[1]);
		}

		int minWidth = 20;
		int w = size * 5; //输入框的宽
		if (minWidth < w) {
			minWidth = w;
		}
		if (minWidth > width) {
			minWidth = width;
		}

		setWidth(minWidth);
		setHeight(height);

		int r0 = rect[0];
		int r1 = rect[1];
		int r3 = rect[3];

		if (rect[2] < minWidth) { //当前行不足以显示输入框
			setInnerTop(rect[1] + rect[3] + Settings.HORPADDING);
			setInnerLeft(Settings.VECPADDING);
			rect[0] = Settings.VECPADDING + minWidth;
			rect[1] = r1 + r3;
			rect[2] = width - minWidth;
			rect[3] = height;
		} else {
			rect[0] = r0 + minWidth + Settings.VECPADDING;
			rect[1] = r1;
			rect[2] = width - minWidth - r0;
			rect[3] = height;
		}
	}

	public void setSelectedIndex(int selectedIndex) {
		this.selectedIndex = selectedIndex;
		setText((String) items.get(selectedIndex));
	}

	protected void itemStateChange() {
		if (null != itemListener) {
			itemListener.valueChanged(this);
		}
	}

	public final ValueChangeListener getItemListener() {
		return itemListener;
	}

	public final void setItemListener(ValueChangeListener itemListener) {
		this.itemListener = itemListener;
	}

	public boolean pointerReleased(int x, int y) {
		if (x > getLeft() && x < getLeft() + getWidth() && y > getTop()
				&& y < getTop() + getHeight()) {
			return true;
		}
		return false;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}
}

⌨️ 快捷键说明

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