📄 componentscreen.java
字号:
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 + -