2016-09-03 5 views
1

2 개의 버튼이 있고 2 버튼이있는 버튼을 설정하고 싶습니다. 그러나 나는 그것을 천천히 처음부터 다른 곳으로 옮기고 싶다. 누구나 어떻게 할 수 있는지 알고 있습니까? 대단히 현재 레이아웃의 구성 방법에 따라 달라집니다Java에서 한 위치에서 다른 위치로 버튼을 천천히 이동하는 방법은 무엇입니까?

int num_1_x= num_array[num1].getLocation().x; 
int num_2_x =num_array[num2].getLocation().x; 

num_array[num1].setLocation(num_2_x, num_array[num1].getLocation().y); 
num_array[num2].setLocation(num_1_x,num_array[num2].getLocation().y); 
+0

참조 : http://stackoverflow.com/help/someone-answers – c0der

답변

1

. 레이아웃 관리자를 사용하면 일반적으로 버튼이 일부 패널에 배치됩니다. 네가 할 수있는 유일한 방법은 그들의 위치를 ​​바꾸는 것이다. 그것은 "즉시"와 같을 것입니다.

하지만 "하드 코딩 된"위치 설정을 수행하려는 경우; 그래서 button1은 x1, y1; 그리고 button2는 x2, y2에 있습니다; 물론 두 버튼 사이의 "지리적"거리를 계산할 수 있습니다. 그 거리를 여러 섹션으로 나누십시오. 두 단추를 여러 단계로 다시 배치하십시오. 다른 말로하면, 화면에서 "방황하다"는 것입니다.

0

항상 그렇듯이 "큰 문제"를 작은 문제로 분해하고 한 번에 한 단계 씩 진행하는 것이 가장 좋습니다. 나는 다음 마우스로 끄는 예를 배우기 시작하는 것이 좋습니다 것입니다 : 당신이 아이디어를 얻을 때

import java.awt.Dimension; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseMotionAdapter; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.WindowConstants; 

public class DragTest extends JFrame { 

    int pX, pY; 

    public DragTest() { 

     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     setPreferredSize(new Dimension(600, 500)); 

     JPanel jPanel1 = new JPanel(); 
     add(jPanel1); 

     jPanel1.setLayout(null); 

     final JButton button = new JButton("Drag Me"); 
     button.setBounds(50, 50, 150, 25); 

     button.addMouseMotionListener(new MouseMotionAdapter(){ 
      @Override 
      public void mouseDragged(MouseEvent me) { 
       button.setLocation((button.getLocation().x + me.getX()) - pX, 
         (button.getLocation().y + me.getY()) - pY); 
       jPanel1.revalidate(); 
       jPanel1.repaint(); 
      } 
     }); 
     button.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mousePressed(MouseEvent me) { 
       // Get x,y and store them 
       pX = me.getX(); 
       pY = me.getY(); 
      } 
     }); 

     jPanel1.add(button); 
     jPanel1.revalidate(); 
     jPanel1.repaint(); 

     pack(); 
    } 

    public static void main(String args[]) { 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new DragTest().setVisible(true); 
      } 
     }); 
    } 
} 

다음 (원하는 애니메이션을 만들 수) pX의와 평 문법보다는 마우스 드래그로 변경하려고합니다.

두 개의 버튼을 사용하는 것보다 낫습니다.
마지막 단계로 위치를 바꾸는 데 필요한 계산을 추가하십시오.

+0

정말 고마워요! –

관련 문제