Tôi đang kẹt vào lúc này với thư viện Java Jung.Đỉnh màu Jung với giá trị
Tôi hiển thị các đỉnh và cạnh, chỉ tôi không thể tìm thấy bất kỳ chức năng nào cho tô màu đỉnh mà tôi cần với giá trị của các đỉnh chứ không phải bằng chuột.
import edu.uci.ics.jung.algorithms.layout.FRLayout;
import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.visualization.BasicVisualizationServer;
import edu.uci.ics.jung.visualization.decorators.PickableVertexPaintTransformer;
import edu.uci.ics.jung.visualization.decorators.ToStringLabeller;
import edu.uci.ics.jung.visualization.renderers.DefaultVertexLabelRenderer;
import edu.uci.ics.jung.visualization.renderers.Renderer.VertexLabel.Position;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import org.apache.commons.collections15.Transformer;
import org.apache.commons.collections15.functors.ConstantTransformer;
public class Design {
public Graph<String, Integer> g;
public Design() {
this.g = ProjectTools.readNet("SmallTown.net");
}
public static <Paint> void main(String[] args) {
Design sgv = new Design();
Layout<Integer, String> layout = new FRLayout(sgv.g);
layout.setSize(new Dimension(800,800));
BasicVisualizationServer<Integer, String> vv =
new BasicVisualizationServer<Integer, String>(layout);
Transformer<Integer,Paint> vertexPaint = new Transformer<Integer,Paint>() {
public Paint transform(Integer i) {
return (Paint) Color.GREEN;
}
};
vv.setPreferredSize(new Dimension(850,850));
vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.green));
vv.getRenderContext().setEdgeDrawPaintTransformer(new ConstantTransformer(Color.white));
vv.getRenderContext().setEdgeStrokeTransformer(new ConstantTransformer(new BasicStroke(2.5f)));
vv.getRenderContext().setVertexFillPaintTransformer((Transformer<Integer, java.awt.Paint>) vertexPaint);
vv.getRenderContext().setVertexFillPaintTransformer(new PickableVertexPaintTransformer<Integer>(vv.getPickedVertexState(), Color.green, Color.yellow));
vv.setBackground(Color.gray);
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Integer>());
vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR);
JFrame frame = new JFrame("Projet Algo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
}
}
vẽ của tôi:
Cám ơn câu trả lời của bạn, nhưng mã của bạn không làm việc cho cấu hình của tôi. Tôi không muốn sử dụng chuột để tô màu các điểm. Tôi muốn thêm điểm vào màu trực tiếp trong mã của tôi. – Daleksek
@ Daleksek "Tôi không muốn sử dụng chuột để tô màu các điểm" nhưng bạn sử dụng 'PickableVertexPaintTransformer' ngụ ý bạn muốn chọn đỉnh. Tuy nhiên, bạn vẫn có thể thay đổi việc triển khai 'VertexPaintTransformer # transform()' thành yêu cầu của bạn mà không cần sử dụng chuột. Tại sao bạn thử mã và xem những gì nó làm, bạn sẽ nhận được xen kẽ các đỉnh màu xanh lá cây và đỏ. – GrahamA