📄 bqscreenform.java
字号:
/*
* Created on 2005-9-21 by pcy
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package a.a.a.midp.lcdui;
import javax.microedition.lcdui.ItemStateListener;
import java.awt.*;
public class BQScreenForm extends BQScreenPanel {
public static final long serialVersionUID=1;
private static final int GROW_SIZE = 4;
BQDisplayable displayable;
private BQItem[] items;
private int numOfItems;
public BQScreenForm(BQDisplayable displayable) {
super();
this.displayable=displayable;
this.setBackground(BQDisplayable.WHITE_COLOR);
this.setLayout(new BorderLayout());
this.setAutoscrolls(true);
items=new BQItem[GROW_SIZE];
}
public int appndItem(BQItem item){
if (item.getOwner() != null) {
throw new IllegalStateException();
}
return insertImpl(numOfItems, item);
}
public void deleteItem(int itemNum){
if (itemNum < 0 || itemNum >= numOfItems) {
throw new IndexOutOfBoundsException();
}
BQItem deletedItem = items[itemNum];
deletedItem.setOwner(null);
numOfItems--;
if (itemNum < numOfItems) {
System.arraycopy(items, itemNum + 1, items, itemNum,
numOfItems - itemNum);
}
// Delete reference to the last item
// that was left after array copy
items[numOfItems] = null;
// The Form is clear; reset its state
if (numOfItems == 0 && items.length > GROW_SIZE) {
items = new BQItem[GROW_SIZE]; // start fresh
}
}
public void deleteAllItems(){
if (numOfItems == 0) {
return;
}
for (int x = 0; x < numOfItems; x++) {
items[x].setOwner(null);
items[x] = null;
}
if (items.length > GROW_SIZE) {
items = new BQItem[GROW_SIZE]; // start fresh
}
numOfItems = 0;
this.removeAll();
}
public void insertItemByIndex(int itemNum, BQItem item){
if (item.getOwner() != null) {
throw new IllegalStateException();
}
if (itemNum < 0 || itemNum > numOfItems) {
throw new IndexOutOfBoundsException();
}
this.insertImpl(itemNum,item);
}
public void setItemByIndex(int itemNum,
BQItem item){
if (item.getOwner() != null) {
throw new IllegalStateException();
}
if (itemNum < 0 || itemNum >= numOfItems) {
throw new IndexOutOfBoundsException();
}
setImpl(itemNum, item, true);
}
public BQItem getItemByIndex(int itemNum){
if (itemNum < 0 || itemNum >= numOfItems) {
throw new IndexOutOfBoundsException();
}
return items[itemNum];
}
public void setItemStateListener(ItemStateListener iListener){
}
public int getTotalItemCount(){
return numOfItems;
}
int insertImpl(int itemNum, BQItem item){
if (items.length == numOfItems) {
BQItem newItems[] = new BQItem[numOfItems + GROW_SIZE];
System.arraycopy(items, 0, newItems, 0, itemNum);
System.arraycopy(items, itemNum, newItems, itemNum + 1,
numOfItems - itemNum);
items = newItems;
} else {
// if we're not appending
if (itemNum != numOfItems) {
System.arraycopy(items, itemNum, items, itemNum + 1,
numOfItems - itemNum);
}
}
numOfItems++;
items[itemNum] = null;
setImpl(itemNum, item, false);
return itemNum;
}
void setImpl(int itemNum, BQItem item, boolean replace) {
BQItem oldItem = items[itemNum];
if (oldItem != null) {
oldItem.setOwner(null);
}
item.setOwner((BQScreen)displayable);
items[itemNum] = item;
if(replace){
this.remove(itemNum);
}
this.add(item,itemNum);
reBounds();
}
private void reBounds(){
int n=this.getComponentCount();
int w=displayable.getDisplayWidth();
int h=displayable.getDisplayHeight();
int dh=20;
int y=2;
BQItem item;
for(int i=0; i<n ; i++){
item=(BQItem)this.getComponent(i);
dh=item.getMinimumHeight();
if(y+dh>h-5){
dh=h-5-y;
}
item.setBounds(5,y,w-10,dh);
item.reBounds();
y+=dh+5;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -