jnlayeredcontainer.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 188 行
JAVA
188 行
package org.jnode.wt.components;
import org.jnode.wt.components.JNWindow;
import org.jnode.wt.components.JNComponent;
import org.jnode.wt.components.JNContainer;
import java.awt.Graphics;
import java.awt.Dimension;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.Collection;
/**
* @author vali
*/
public class JNLayeredContainer extends JNContainer {
public static final Integer DEFAULT_LAYER = new Integer(1000);
public static final Integer MENU_COMBO_LAYER = new Integer(1005);
protected final Map containers = new TreeMap();
public JNLayeredContainer() {
super();
addLayer(DEFAULT_LAYER);
}
public void add(JNComponent comp) {
add(comp, DEFAULT_LAYER);
}
/**
* Add the given component to the given layer.
* @param comp
* @param layer
*/
public void add(JNComponent comp, Integer layer) {
JNSimpleContainer container = (JNSimpleContainer) containers.get(layer);
if (container == null) {
container = addLayer(layer);
}
container.add(comp);
}
/**
* Add a layer.
*
* @param layer
* @return
*/
public JNSimpleContainer addLayer(Integer layer) {
JNSimpleContainer container = new JNSimpleContainer();
container.setParent(this);
container.setLocation(0, 0);
container.setSize(this.getSize());
this.containers.put(layer, container);
return container;
}
/**
* @see org.jnode.wt.components.JNContainer#getComponentAt(int, int)
*/
public JNComponent getComponentAt(int x, int y) {
for (Iterator it = containers.keySet().iterator(); it.hasNext();) {
JNSimpleContainer c = (JNSimpleContainer) containers.get(it.next());
JNComponent returnComp = c.getComponentAt(x, y);
if (returnComp != null && returnComp != c)
return returnComp;
}
return null;
}
/**
* Gets the layer on which the given component is placed.
*
* @param comp
* @return The layer number, or null if not found.
*/
public Integer getLayer(JNComponent comp) {
for (Iterator it = containers.keySet().iterator(); it.hasNext();) {
Integer layer = (Integer) it.next();
JNSimpleContainer c = (JNSimpleContainer) containers.get(layer);
if (c.containsComponent(comp))
return layer;
}
return null;
}
public int getWindowsCount() {
int count = 0;
for (Iterator iter = this.containers.values().iterator(); iter.hasNext();) {
JNSimpleContainer container = (JNSimpleContainer) iter.next();
for (Iterator iterator = container.getComponentList().iterator(); iterator.hasNext();) {
JNComponent window = (JNComponent) iterator.next();
if (window instanceof JNWindow) {
count++;
}
}
}
return count;
}
public void invalidate() {
for (Iterator it = containers.keySet().iterator(); it.hasNext();) {
JNSimpleContainer c = (JNSimpleContainer) containers.get(it.next());
c.invalidate();
}
}
/**
* Move the given component to the given layer.
*
* @param comp
* @param layer
*/
public void moveToLayer(JNComponent comp, Integer layer) {
Integer oldLayer = getLayer(comp);
if (oldLayer != null) {
remove(comp, oldLayer);
}
this.add(comp, layer);
}
public void recalculate() {
for (Iterator it = containers.keySet().iterator(); it.hasNext();) {
JNSimpleContainer c = (JNSimpleContainer) containers.get(it.next());
c.setSize(getSize());
}
}
public void remove(JNComponent comp, Integer layer) {
((JNSimpleContainer) containers.get(layer)).remove(comp);
}
public void resize() {
for (Iterator it = containers.keySet().iterator(); it.hasNext();) {
JNSimpleContainer c = (JNSimpleContainer) containers.get(it.next());
c.resize();
}
}
/**
* Update all layers.
* @see org.jnode.wt.components.JNComponent#update(java.awt.Graphics)
*/
public void update(Graphics g) {
super.update(g);
for (Iterator it = containers.keySet().iterator(); it.hasNext();) {
JNSimpleContainer c = (JNSimpleContainer) containers.get(it.next());
c.update(g);
}
}
public void validate() {
super.validate();
for (Iterator it = containers.keySet().iterator(); it.hasNext();) {
JNSimpleContainer c = (JNSimpleContainer) containers.get(it.next());
c.validate();
}
}
public JNSimpleContainer getLayer(Integer layer) {
return (JNSimpleContainer) containers.get(layer);
}
protected Dimension calculatePreferredSize() {
return new Dimension();
}
/**
* @return Collection
*/
public Collection getLayers() {
return containers.values();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?