2015-05-02 7 views
-2

Как мы можем нарисовать стрелку в java (настольном приложении) с помощью swing? В основном я вижу холст для стрелки. Когда мы создаем холст, уже существующий контейнер заменяется холстом, тогда отображается только стрелка. Как решить эту проблему?нарисовать стрелку с помощью swing

Это мой код.

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

Смежные вопросы