📄 node.java~
字号:
/** Return the visibility of this Node as a boolean.
*/
public boolean isVisible() {
return visible;
}
/** Set the type of this Node to the int <tt>type</tt>.
* @see TYPE_RECTANGLE
* @see TYPE_ROUNDRECT
* @see TYPE_ELLIPSE
* @see TYPE_CIRCLE
*/
public void setType( int type ) {
typ = type;
}
/** Return the type of this Node as an int.
* @see TYPE_RECTANGLE
* @see TYPE_ROUNDRECT
* @see TYPE_ELLIPSE
* @see TYPE_CIRCLE
*/
public int getType() {
return typ;
}
/** Set the font of this Node to the Font <tt>font</tt>. */
public void setFont( Font font ) {
this.font = font;
}
/** Returns the font of this Node as a Font*/
public Font getFont() {
return font;
}
/** Set the background color of this Node to the Color <tt>bgColor</tt>. */
public void setBackColor( Color bgColor ) {
backColor = bgColor;
}
/** Return the background color of this Node as a Color.
*/
public Color getBackColor() {
return backColor;
}
/** Set the text color of this Node to the Color <tt>txtColor</tt>. */
public void setTextColor( Color txtColor ) {
textColor = txtColor;
}
/** Return the text color of this Node as a Color.
*/
public Color getTextColor() {
return textColor;
}
/** Set the label of this Node to the String <tt>label</tt>. */
public void setLabel( String label ) {
lbl = label;
}
/** Return the label of this Node as a String.
*/
public String getLabel() {
return lbl;
}
/** Set the fixed status of this Node to the boolean <tt>fixed</tt>. */
public void setFixed( boolean fixed ) {
this.fixed = fixed;
}
/** Returns true if this Node is fixed (in place).
*/
public boolean getFixed() {
return fixed;
}
// ....
/** Return the number of Edges in the cumulative Vector.
* @deprecated this method has been replaced by the <tt>edgeCount()</tt> method.
*/
public int edgeNum() {
return edges.size();
}
/** Return the number of Edges in the cumulative Vector. */
public int edgeCount() {
return edges.size();
}
/** Return an iterator over the Edges in the cumulative Vector, null if it is empty. */
public Iterator getEdges() {
if ( edges.size() == 0 ) return null;
else return edges.iterator();
}
/** Returns the local Edge count. */
public int visibleEdgeCount() {
return visibleEdgeCnt;
}
/** Return the Edge at int <tt>index</tt>. */
public Edge edgeAt( int index ) {
return (Edge)edges.elementAt(index);
}
/** Add the Edge <tt>edge</tt> to the graph. */
public void addEdge( Edge edge ) {
if ( edge == null ) return;
edges.addElement(edge);
}
/** Remove the Edge <tt>edge</tt> from the graph. */
public void removeEdge( Edge edge ) {
edges.removeElement(edge);
}
/** Return the width of this Node. */
public int getWidth() {
if ( fontMetrics != null && lbl != null ) {
return fontMetrics.stringWidth(lbl) + 12;
} else {
return 10;
}
}
/** Return the height of this Node. */
public int getHeight() {
if ( fontMetrics != null ) {
return fontMetrics.getHeight() + 6;
} else {
return 6;
}
}
/** Returns true if this Node intersects Dimension <tt>d</tt>. */
public boolean intersects( Dimension d ) {
return ( drawx > 0 && drawx < d.width && drawy>0 && drawy < d.height );
}
/** Returns true if this Node contains the Point <tt>px,py</tt>. */
public boolean containsPoint( double px, double py ) {
return (( px > drawx-getWidth()/2) && ( px < drawx+getWidth()/2)
&& ( py > drawy-getHeight()/2) && ( py < drawy+getHeight()/2));
}
/** Returns true if this Node contains the Point <tt>p</tt>. */
public boolean containsPoint( Point p ) {
return (( p.x > drawx-getWidth()/2) && ( p.x < drawx+getWidth()/2)
&& ( p.y > drawy-getHeight()/2) && ( p.y < drawy+getHeight()/2));
}
/** Paints the Node. */
public void paint( Graphics g, TGPanel tgPanel ) {
if (!intersects(tgPanel.getSize()) ) return;
paintNodeBody(g, tgPanel);
if ( visibleEdgeCount()<edgeCount() ) {
int ix = (int)drawx;
int iy = (int)drawy;
int h = getHeight();
int w = getWidth();
int tagX = ix+(w-7)/2-2+w%2;
int tagY = iy-h/2-2;
// char character;
String character;
int hiddenEdgeCount = edgeCount()-visibleEdgeCount();
// character = (hiddenEdgeCount<9) ? (char) ('0' + hiddenEdgeCount) : '*';
character = new Integer(hiddenEdgeCount).toString();
paintSmallTag(g, tgPanel, tagX, tagY, Color.red, Color.white, character);
}
}
public Color getPaintBorderColor(TGPanel tgPanel) {
if (this == tgPanel.getDragNode()) return BORDER_DRAG_COLOR;
else if (this == tgPanel.getMouseOverN()) return BORDER_MOUSE_OVER_COLOR;
else return BORDER_INACTIVE_COLOR;
}
public Color getPaintBackColor(TGPanel tgPanel) {
if ( this == tgPanel.getSelect() ) {
return BACK_SELECT_COLOR;
} else {
if (fixed) return BACK_FIXED_COLOR;
if (markedForRemoval) return new Color(100,60,40);
if (justMadeLocal) return new Color(255,220,200);
return backColor;
}
}
public Color getPaintTextColor(TGPanel tgPanel) {
return textColor;
}
/** Paints the background of the node, along with its label */
public void paintNodeBody( Graphics g, TGPanel tgPanel) {
g.setFont(font);
fontMetrics = g.getFontMetrics();
int ix = (int)drawx;
int iy = (int)drawy;
int h = getHeight();
int w = getWidth();
int r = h/2+1; // arc radius
Color borderCol = getPaintBorderColor(tgPanel);
g.setColor(borderCol);
if ( typ == TYPE_ROUNDRECT ) {
g.fillRoundRect(ix - w/2, iy - h / 2, w, h, r, r);
} else if ( typ == TYPE_ELLIPSE ) {
g.fillOval(ix - w/2, iy - h / 2, w, h );
} else if ( typ == TYPE_CIRCLE ) { // just use width for both dimensions
g.fillOval(ix - w/2, iy - w / 2, w, w );
} else { // TYPE_RECTANGLE
g.fillRect(ix - w/2, iy - h / 2, w, h);
}
Color backCol = getPaintBackColor(tgPanel);
g.setColor(backCol);
if ( typ == TYPE_ROUNDRECT ) {
g.fillRoundRect(ix - w/2+2, iy - h / 2+2, w-4, h-4, r, r );
} else if ( typ == TYPE_ELLIPSE ) {
g.fillOval(ix - w/2+2, iy - h / 2+2, w-4, h-4 );
} else if ( typ == TYPE_CIRCLE ) {
g.fillOval(ix - w/2+2, iy - w / 2+2, w-4, w-4 );
} else { // TYPE_RECTANGLE
g.fillRect(ix - w/2+2, iy - h / 2+2, w-4, h-4);
}
Color textCol = getPaintTextColor(tgPanel);
g.setColor(textCol);
g.drawString(lbl, ix - fontMetrics.stringWidth(lbl)/2, iy + fontMetrics.getDescent() +1);
}
/** Paints a tag with containing a character in a small font. */
public void paintSmallTag(Graphics g, TGPanel tgPanel, int tagX, int tagY,
Color backCol, Color textCol, String character) {
g.setColor(backCol);
g.fillRect(tagX, tagY, 20, 8);
g.setColor(textCol);
g.setFont(SMALL_TAG_FONT);
g.drawString(""+character, tagX+2, tagY+7);
}
} // end com.touchgraph.graphlayout.Node
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -