2015-05-02 31 views
-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); 
     } 

    } 
} 

我想绘制线条或箭头来创建一棵树。这些行添加在两个节点之间,这样就构成了一棵树。

+1

定位组件可能不是这里的方法。除非你想'JTree',否则我会建议你自定义绘制树的每个部分。 –

回答

-1

简单地使用图像,而不是使用标签!

+3

通过解释可以得出一小段甚至几个句子,这对于做出高质量的答案是很有帮助的。 – Jeeped