コンテナ内のコンポーネントをマウスでドラッグする
戻る
::::::::::::::
ComponentDragger.java
::::::::::::::
import java.awt.*;
import java.awt.event.*;
import java.awt.dnd.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.swing.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
/**
* $Id: ComponentDragger.html,v 1.1 2009/06/22 16:11:40 kishi Exp kishi $
* @author KISHI Yasuhiro
*/
public class ComponentDragger extends MouseMotionAdapter {
private Point point = null;
public ComponentDragger() {
super();
point = new Point();
}
public void mouseDragged( MouseEvent e ) {
JComponent component = ( JComponent ) e.getSource();
Container container = component.getParent();
// System.out.println( "DRAGGED... " + component.getClass().getName() );
// コンテナ内の絶対座標を求める
point.x = e.getX() + component.getX();
point.y = e.getY() + component.getY();
component.setLocation( point );
}
}
::::::::::::::
Draggable.java
::::::::::::::
import java.awt.*;
import java.awt.event.*;
/**
* $Id: ComponentDragger.html,v 1.1 2009/06/22 16:11:40 kishi Exp kishi $
*/
public interface Draggable extends ActionListener {
public void move();
}
::::::::::::::
MyFrame.java
::::::::::::::
import java.awt.*;
import java.awt.event.*;
import java.awt.dnd.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.swing.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
/**
* $Id: ComponentDragger.html,v 1.1 2009/06/22 16:11:40 kishi Exp kishi $
* @author KISHI Yasuhiro
*/
public class MyFrame extends JFrame {
public MyFrame() {
super( "コンテナ内のコンポーネントをマウスでドラッグする" );
setBounds( 0, 0, 480, 320 );
setLayout( new FlowLayout() );
try {
// 外観を設定します
UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" );
// 外観を変更します
SwingUtilities.updateComponentTreeUI( this );
} catch ( Exception e ) {
e.printStackTrace();
System.exit( -1 );
}
setBackground( Color.white );
MyPanel panel = new MyPanel();
panel.setPreferredSize( new Dimension( 640, 480 ) );
JScrollPane sPane = new JScrollPane();
sPane.getViewport().setView( panel );
sPane.setPreferredSize( new Dimension( 384, 256 ) );
Container container = getContentPane();
container.add( sPane );
setVisible( true );
//pack();
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent event ) {
dispose();
System.exit( 0 );
}
}
);
}
public static void main( String[] args ) {
new MyFrame();
}
}
::::::::::::::
MyPanel.java
::::::::::::::
import java.awt.*;
import java.awt.event.*;
import java.awt.dnd.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.swing.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
/**
* $Id: ComponentDragger.html,v 1.1 2009/06/22 16:11:40 kishi Exp kishi $
* @author KISHI Yasuhiro
*/
public class MyPanel extends JPanel {
private BufferedImage image = null;
private boolean isDragged = false;
public MyPanel() {
super();
setToolTipText( "スクロールできます" );
setBackground( Color.cyan );
setLayout( null );
JButton button = new JButton( "ボタン" );
button.setBounds( 100, 100, 100, 50 );
this.add( button );
button.addMouseMotionListener( new ComponentDragger() );
}
}
戻る