2016-09-03 7 views
1

私は2つのボタンを持っていますが、私は2つのボタンがあったところに1つのボタンを設定したいと思います。しかし、私はそれがゆっくりと最初の場所から他の場所に移動したい。誰でもどのようにそれを行うアイデアがありますか?非常に多くのあなたの現在のレイアウトが編成されている方法によって異なり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にあります。もちろん、2つのボタンの間の「地理的な」距離を計算することができます。その距離をいくつかのセクションにスライスします。次に両方のボタンをいくつかのステップで再配置します。言い換えれば、あなたは彼らが画面上をさまようようにするでしょう。

0

いつものように、「大きな問題」をより小さなものに分割し、一度に1ステップずつ取り上げることがベストです。 私は、次のドラッグの例を学んで開始することをお勧め:あなたのアイデアを得るとき

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とはpY文法的にではなく、マウスドラッグによりを変更しようとします。

これは2つのボタンで行います。
最後のステップとして、ポジションを交換するために必要な計算を追加します。

+0

ありがとうございました! –

関連する問題