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

📄 mycalendar.java

📁 《精通JAVA手机游戏与应用程序设计》随书光盘
💻 JAVA
字号:
package MyCalendar;

import javax.microedition.lcdui.*;


public class MyCalendar
    extends CustomItem 
    implements ItemCommandListener {

    private final static Command CMD_EDIT = new Command("Select", 
                                                           Command.ITEM, 1);
    private Display display;
    private int rows = 6;//定义表格行数
    private int cols = 7;//定义表格列数
    private int dx = 20;//定义表格宽度
    private int dy = 20;//定义表格高度
    
    private int currentX = 0;//当前的行数
    private int currentY = 0;//当前的列数
    private String[][] data = new String[rows][cols];
    
    
    
    public MyCalendar(String title, Display d) {
        super(title);
        display = d;
        setDefaultCommand(CMD_EDIT);
        setItemCommandListener(this);
        int interactionMode = getInteractionModes();
     }

    
    protected int getMinContentHeight() {

        return (rows * dy) + 1;
    }

    protected int getMinContentWidth() {

        return (cols * dx) + 1;
    }

    protected int getPrefContentHeight(int width) {

        return (rows * dy) + 1;
    }

    protected int getPrefContentWidth(int height) {

        return (cols * dx) + 1;
    }

    protected void paint(Graphics g, int w, int h) {

        for (int i = 0; i <= rows; i++) {
            g.drawLine(0, i * dy, cols * dx, i * dy);
        }

        for (int i = 0; i <= cols; i++) {
            g.drawLine(i * dx, 0, i * dx, rows * dy);
        }

        int oldColor = g.getColor();
        g.setColor(0x00D0D0D0);
        //填充灰色方格
        g.fillRect((currentX * dx) + 1, (currentY * dy) + 1, dx - 1, dy - 1);
        g.setColor(oldColor);

        for (int i = 0; i < rows; i++) {

            for (int j = 0; j < cols; j++) {

                if (data[i][j] != null) {

                    // store clipping properties
                    int oldClipX = g.getClipX();
                    int oldClipY = g.getClipY();
                    int oldClipWidth = g.getClipWidth();
                    int oldClipHeight = g.getClipHeight();
                    //设置局部更新画布的大小,并不是全屏幕更新
                    g.setClip((j * dx) + 1, i * dy, dx - 1, dy - 1);
                    g.drawString(data[i][j], (j * dx) + 5, ((i + 1) * dy) - 3, 
                                 Graphics.BOTTOM | Graphics.LEFT);

                    // 保存原来的画布信息
                    g.setClip(oldClipX, oldClipY, oldClipWidth, oldClipHeight);
                }
            }
        }
    }

    protected boolean traverse(int dir, int viewportWidth, int viewportHeight, 
                               int[] visRect_inout) {
                                          
    	switch (dir) {
    
                case Canvas.DOWN:    
                  
                        if (currentY < (rows - 1)) {
                            currentY++;
                            repaint(currentX * dx, (currentY - 1) * dy, dx, dy);
                            repaint(currentX * dx, currentY * dy, dx, dy);
                        } else    
                            return false;                                
    
                    break;
    
                case Canvas.UP:    
                    
                        if (currentY > 0) {
                            currentY--;
                            repaint(currentX * dx, (currentY + 1) * dy, dx, dy);
                            repaint(currentX * dx, currentY * dy, dx, dy);
                        } else     
                            return false;
                                               
                    break;
    
                case Canvas.LEFT:
    
                    if (currentX > 0) {
                        currentX--;
                        repaint((currentX + 1) * dx, currentY * dy, dx, dy);
                        repaint(currentX * dx, currentY * dy, dx, dy);
                    }
    
                    break;
    
                case Canvas.RIGHT:
    
                    if (currentX < (cols - 1)) {
                        currentX++;
                        repaint((currentX - 1) * dx, currentY * dy, dx, dy);
                        repaint(currentX * dx, currentY * dy, dx, dy);
                    }
            }
        

        visRect_inout[0] = currentX;
        visRect_inout[1] = currentY;
        visRect_inout[2] = dx;
        visRect_inout[3] = dy;

        return true;
    }

    public void setText(String text) {
        data[currentY][currentX] = text;
        repaint(currentY * dx, currentX * dy, dx, dy);
    }

    public void commandAction(Command c, Item i) {
        
    }
}

⌨️ 快捷键说明

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