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

📄 componentscreen.java

📁 moto手机专用的LWT类库源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

                case 2: // '\002'
                    k += currentScreenWidth;
                    break;

                case 3: // '\003'
                    if(component != null)
                        k += component.x;
                    else
                        k = j + components[i].getPreferredWidth();
                    break;

                case 4: // '\004'
                    if(component != null)
                        k += component.x + (component.width >> 1);
                    else
                        k = j + components[i].getPreferredWidth();
                    break;

                case 5: // '\005'
                    if(component != null)
                        k += component.x + component.width;
                    else
                        k = j + components[i].getPreferredWidth();
                    break;

                case 6: // '\006'
                    k += j;
                    break;

                case 7: // '\007'
                    k += j + components[i].getPreferredWidth();
                    break;
                }
                component1.x = j;
                component1.width = k - j;
                int l = component1.topEdgeValue;
                switch(component1.topEdgeScheme)
                {
                default:
                    break;

                case 9: // '\t'
                    if(component != null)
                        l += component.y;
                    break;

                case 10: // '\n'
                    if(component != null)
                        l += component.y + (component.height >> 1);
                    break;

                case 11: // '\013'
                    if(component != null)
                        l += component.y + component.height;
                    break;
                }
                int i1 = component1.bottomEdgeValue;
                switch(component1.bottomEdgeScheme)
                {
                default:
                    break;

                case 9: // '\t'
                    if(component != null)
                        i1 += component.y;
                    else
                        i1 = l + components[i].getPreferredHeight();
                    break;

                case 10: // '\n'
                    if(component != null)
                        i1 += component.y + (component.height >> 1);
                    else
                        i1 = l + components[i].getPreferredHeight();
                    break;

                case 11: // '\013'
                    if(component != null)
                        i1 += component.y + component.height;
                    else
                        i1 = l + components[i].getPreferredHeight();
                    break;

                case 12: // '\f'
                    i1 += l;
                    break;

                case 13: // '\r'
                    i1 += l + components[i].getPreferredHeight();
                    break;
                }
                component1.y = l;
                component1.height = i1 - l;
                if(i1 > maxY)
                    maxY = i1;
                component = component1;
            }
        }

    }

    protected void keyPressed(int i)
    {
        if(focusOwnerIndex >= 0 && components[focusOwnerIndex].keyPressed(i))
            return;
        if(i == upKey)
            setFocusPrevious();
        else
        if(i == downKey)
            setFocusNext();
    }

    protected void keyReleased(int i)
    {
        if(focusOwnerIndex >= 0)
            components[focusOwnerIndex].keyReleased(i);
    }

    protected void keyRepeated(int i)
    {
        if(focusOwnerIndex >= 0 && components[focusOwnerIndex].keyRepeated(i))
            return;
        if(i == upKey)
            setFocusPrevious();
        else
        if(i == downKey)
            setFocusNext();
    }

    protected void pointerDragged(int i, int j)
    {
        if(pointerTarget != null)
        {
            j += scrollOffset;
            pointerTarget.pointerDragged(i - pointerTarget.x, j - pointerTarget.y);
        } else
        if(thumbPressed)
        {
            repaint(getWidth(), thumbOffset + 15, 18, 28);
            thumbOffset = j - 15 - thumbPressY;
            if(thumbOffset < 0)
                thumbOffset = 0;
            if(thumbOffset > getHeight() - 30 - 28)
                thumbOffset = getHeight() - 30 - 28;
            repaint(getWidth(), thumbOffset + 15, 18, 28);
        }
    }

    protected void pointerPressed(int i, int j)
    {
        if(scrollBarVisible && i > currentScreenWidth)
        {
            if(j < 15)
                setScrollOffset(scrollOffset - 1);
            else
            if(j > getHeight() - 15)
            {
                setScrollOffset(scrollOffset + 1);
            } else
            {
                thumbPressY = j - (thumbOffset + 15);
                if(thumbPressY < 0)
                    setScrollOffset(scrollOffset - getHeight());
                else
                if(thumbPressY > 28)
                    setScrollOffset(scrollOffset + getHeight());
                else
                    thumbPressed = true;
            }
        } else
        {
            j += scrollOffset;
            pointerTarget = null;
            for(int k = componentCount - 1; k >= 0; k--)
            {
                Component component = components[k];
                if(component.contains(i, j) && component.enabled)
                {
                    pointerTarget = component;
                    component.pointerPressed(i - component.x, j - component.y);
                    return;
                }
            }

        }
    }

    protected void pointerReleased(int i, int j)
    {
        if(thumbPressed)
        {
            int k = getHeight();
            int l = k - 30 - 28;
            setScrollOffset((thumbOffset * (maxY - k) + (l >> 1)) / l);
            thumbPressed = false;
            return;
        }
        j += scrollOffset;
        Component component = pointerTarget;
        if(component != null)
            component.pointerReleased(i - component.x, j - component.y);
        pointerTarget = null;
    }

    public synchronized void insert(Component component, int i)
    {
        if(component.parent != null)
            component.parent.remove(component);
        if(i > componentCount)
            i = componentCount;
        if(i < 0)
            i = 0;
        Component acomponent[] = components;
        Component acomponent1[] = components;
        if(componentCount == components.length)
        {
            components = new Component[componentCount + 10];
            acomponent1 = components;
            if(i > 0)
                System.arraycopy(acomponent, 0, acomponent1, 0, i);
        }
        if(i < componentCount)
        {
            System.arraycopy(acomponent, i, acomponent1, i + 1, componentCount - i);
            if(focusOwnerIndex >= 0 && focusOwnerIndex >= i)
                focusOwnerIndex++;
        }
        components[i] = component;
        component.parent = this;
        componentCount++;
        invalidate();
        repaint();
    }

    public synchronized void add(Component component)
    {
        insert(component, componentCount);
    }

    public synchronized int getComponentCount()
    {
        return componentCount;
    }

    public synchronized Component getComponent(int i)
        throws IndexOutOfBoundsException
    {
        if(i >= 0 && i < componentCount)
            return components[i];
        else
            throw new IndexOutOfBoundsException();
    }

    public synchronized void remove(Component component)
    {
        if(component.parent == this)
        {
            for(int i = componentCount - 1; i >= 0; i--)
                if(components[i] == component)
                {
                    remove(i);
                    return;
                }

        }
    }

    public synchronized void remove(int i)
        throws IndexOutOfBoundsException
    {
        if(i >= 0 && i < componentCount)
        {
            components[i].parent = null;
            if(i < componentCount - 1)
            {
                System.arraycopy(components, i + 1, components, i, componentCount - i - 1);
                invalidate();
            }
            if(focusOwnerIndex == i)
            {
                components[i].lostFocus();
                focusOwnerIndex = -1;
            } else
            if(focusOwnerIndex > i)
                focusOwnerIndex--;
            componentCount--;
            components[componentCount] = null;
            repaint();
        } else
        {
            throw new IndexOutOfBoundsException();
        }
    }

    public synchronized void removeAll()
    {
        for(int i = componentCount - 1; i >= 0; i--)
        {
            components[i].parent = null;
            components[i] = null;
        }

        componentCount = 0;
        focusOwnerIndex = -1;
        repaint();
    }

    public ComponentScreen()
    {
        focusOwnerIndex = -1;
        components = new Component[10];
        componentCount = 0;
        maxY = 0;
        pointerTarget = null;
        scrollOffset = 0;
        invalid = false;
        scrollBarVisible = false;
        thumbPressed = false;
        thumbPressY = 0;
        currentScreenWidth = 0;
        thumbOffset = 0;
        upKey = getKeyCode(1);
        downKey = getKeyCode(6);
    }

    static 
    {
        long al[] = {
            0xa1a0a0d474e5089L, 0x524448490d000000L, 0x1c00000012000000L, 0xb0af490000000008L, 0x41444964000000fbL, 0xc011c991959c7854L, 0x2ae8b499d7030c20L, 0x63323848e0f3a455L, 0x75e60b2422cc21f8L, 0x5260f7b0f8440a2dL, 
            0x8004033f775959c0L, 0x28994b5541c51585L, 0xe1f5ea6d4acfaf2cL, 0xe76f9fa537ef2c67L, 0x9d09f52c6886cd59L, 0xb708df5e6a70c6b1L, 0xfb6a96694b1d4dacL, 0x4222b3c6212a4a01L, 0x4e454900000000f7L, 0x826042ae44L
        };
        char c = '\235';
        long al1[] = {
            0xa1a0a0d474e5089L, 0x524448490d000000L, 0x1e00000011000000L, 0x6259450000000208L, 0x414449b500000078L, 0xc31641d4959c7854L, 0x90f11de250040820L, 0x5530e29e68ba4878L, 0xc7987d1fc744caeaL, 0x199888bbdeb585ddL, 
            0xa3cb3354e6d67319L, 0xf81c5ce80c63228dL, 0x19d426d607114c9eL, 0x8af2f803743a14a1L, 0xaa1e529f8736a64L, 0x22284e080e72d402L, 0x2647569b64456a91L, 0x5b9e8d78a4c8ead5L, 0x3df55407ad551113L, 0x33d5b9d7554c62b7L, 
            0xd5b22fb1ae0ea122L, 0x621f5d62f6f32541L, 0xdc03d6673ebac113L, 0x32bfa7b9088b1a53L, 0x4e21003306a7b3dbL, 0xb8465489d9c8955eL, 0x7ffffc7bdba6d713L, 0xe3a3df7fa20107fcL, 0x454900000000a8ecL, 0x826042ae444eL
        };
        char c1 = '\356';
        scrollbarThumb = loadImage(al, c);
        scrollbarArrows = loadImage(al1, c1);
    }
}

⌨️ 快捷键说明

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