-2
如何使用挥杆在java(桌面应用程序)中绘制箭头?我主要在那里看箭头的画布。当我们创建一个画布时,已经存在的容器被画布取代,那么只有箭头显示。如何解决这个问题?使用挥杆绘制箭头
这是我的代码。
public class last extends JFrame
{
public static JFrame frame = new JFrame("NoLayout Test");
ArrayList<Output> out;
public last()
{
JFrame.setDefaultLookAndFeelDecorated(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
frame.setSize(600, 400);
frame.setVisible(true);
}
public void Graph(ArrayList<Output> o) {
out=o;
int x1= 300-50, x2=300+25, y=34;
JLabel label = new JLabel(out.get(0).value);
label.setBounds(x1, y, x2, y);
addComponent(3, x1, y);
frame.add(label);
}
private void addComponent(int child, int x, int y)
{
Insets insets = frame.getInsets();
int x1, x2;
if (child ==1)
{
JLabel label = new JLabel("leaf");
label.setBounds(x, y*2, 100, 20);
frame.add(label);
}
if (child ==2)
{
JLabel label1 = new JLabel("nodes1");
x1=round(x/2-25);
System.out.println(x1+" "+ y);
label1.setBounds(x1, y*2, 100, 20);
frame.add(label1);
x1=round(x+(x/2+25));
System.out.println(x1+" "+ y);
JLabel label2 = new JLabel("nodes2");
label2.setBounds(x1, y*2, 100, 20);
frame.add(label2);
}
if (child ==3)
{
x1=x/2-25;
JLabel label = new JLabel("nodes1");
Dimension size = label.getPreferredSize();
label.setBounds(x1 + insets.left, y*2 + insets.top, size.width, size.height);
System.out.println(x1+" "+ y*2);
//label.setBounds(x1, y*2, 100, 20);
frame.add(label);
x1= x+(x/2+25);
JLabel label2 = new JLabel("nodes2");
size = label2.getPreferredSize();
label2.setBounds(x1 + insets.left, y*2 + insets.top, size.width, size.height);
frame.add(label2);
System.out.println(x1+" "+ y*2);
JLabel label3 = new JLabel("nodes3");
size = label3.getPreferredSize();
label3.setBounds(x + insets.left, y*2 + insets.top, size.width, size.height);
System.out.println(x1+" "+ y*2);
frame.add(label3);
}
}
}
我想绘制线条或箭头来创建一棵树。这些行添加在两个节点之间,这样就构成了一棵树。
定位组件可能不是这里的方法。除非你想'JTree',否则我会建议你自定义绘制树的每个部分。 –