interactablecomponent.java

来自「moto手机专用的LWT类库源码」· Java 代码 · 共 154 行

JAVA
154
字号
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   InteractableComponent.java

package com.motorola.lwt;

import javax.microedition.lcdui.*;

// Referenced classes of package com.motorola.lwt:
//            Component, ComponentListener

public abstract class InteractableComponent extends Component
{

    boolean pressed;
    String label;
    Font itsFont;
    int labelWidth;
    int labelHeight;
    boolean interactable;
    ComponentListener listener;

    public InteractableComponent(String s)
    {
        pressed = false;
        label = null;
        itsFont = Font.getDefaultFont();
        labelWidth = 0;
        labelHeight = 0;
        interactable = true;
        listener = null;
        setLabel(s);
        acceptsKeyFocus = true;
    }

    public boolean isPressed()
    {
        return pressed;
    }

    public void setPressed(boolean flag)
    {
        if(flag != pressed)
        {
            pressed = flag;
            repaint();
        }
    }

    public abstract void componentActuated();

    protected void pointerDragged(int i, int j)
    {
        if(interactable)
            setPressed(contains(i + getX(), j + getY()));
    }

    protected void pointerPressed(int i, int j)
    {
        if(interactable)
        {
            requestFocus();
            setPressed(true);
        }
    }

    protected void pointerReleased(int i, int j)
    {
        if(interactable && pressed)
        {
            componentActuated();
            setPressed(false);
        }
    }

    public void setComponentListener(ComponentListener componentlistener)
    {
        listener = componentlistener;
    }

    protected final void dispatchComponentEvent(int i)
    {
        if(listener != null)
            listener.processComponentEvent(this, i);
    }

    public abstract void paint(Graphics g);

    public void setLabel(String s)
    {
        setTextAndFont(s, itsFont);
    }

    private void setTextAndFont(String s, Font font)
    {
        label = s;
        itsFont = font;
        int i = s == null ? 0 : font.stringWidth(s);
        if(i != labelWidth)
        {
            labelWidth = i;
            preferredWidthChanged();
        }
        int j = s == null ? 0 : font.getHeight();
        if(j != labelHeight)
        {
            labelHeight = j;
            preferredHeightChanged();
        }
        repaint();
    }

    public String getLabel()
    {
        return label;
    }

    public synchronized void setFont(Font font)
    {
        setTextAndFont(label, font != null ? font : Font.getDefaultFont());
    }

    public synchronized Font getFont()
    {
        return itsFont;
    }

    protected boolean keyPressed(int i)
    {
        if(interactable && getParent().getGameAction(i) == 8)
        {
            setPressed(true);
            return true;
        } else
        {
            return false;
        }
    }

    protected boolean keyReleased(int i)
    {
        if(interactable && getParent().getGameAction(i) == 8)
        {
            componentActuated();
            setPressed(false);
            return true;
        } else
        {
            return false;
        }
    }
}

⌨️ 快捷键说明

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