�G�N�X�v���[���iWindows�j����t�@�C�����h���b�O���h���b�v�������C�̊�
2000.11.16 �V�K
���́AJava �A�v���P�[�V�����Ԃ̃h���b�O���h���b�v�i�ȍ~�A�c���c�j�����A�l�C�e�B�u�E�v���b�g�t�H�[������̂c���c�̎����̂ق����͂邩�ɊȒP�ł��B ���R���ȒP�ŁA�u���v�������쐬����Ηǂ��A���G�ȁu���葤�v�����Ȃ��čςނ���ł��B ���R�u���葤�v�̓l�C�e�B�u�A�������� Java VM ���S�����Ă���܂��B
�����T���v�������Ă݂܂��傤�B
�z���g�ɊȒP�ł��B
���̃\�[�X�E�R�[�h�͒P�Ƃœ��삷��悤�ɂȂ��Ă���̂ŁA���ʂȕ����������ď��������ł��B
���A�{���I�ȂƂ���͂c���c�̃h���b�v����ɑ���C�x���g�E���X�i���������Ă��镔���ł��B
�h���b�v����ɑ���C�x���g�E���X�i DropTargetListener �́A�T�̃��\�b�h��L���Ă��܂��B
���̂�������g�p����̂́A�h���b�O��������o�����Ƃ��� dragEnter() �Ƃ������\�b�h�B
�����āA���ۂɃh���b�v���ꂽ�Ƃ��ɔ�������C�x���g���������� drop() ���\�b�h�́A�v�Q�ł��B
dragEnter() ���\�b�h�̓h���b�O����������A�Ƃ����������L�q���邾���ł��B
�����Ċ̐S�� drop() ���\�b�h�ł����A���̃��\�b�h�ł�
���ӓ_�Ƃ��ẮA�h���b�v����鑤���L�`���Ɛݒ肵�Ă����Ȃ�������Ȃ��Ƃ���ł��B ���̃T���v���ł�
�Ƃ��Ă���̂ŁA�p�l���ƃ^�C�g���E�o�[�ǂ���ɂ��c���c���t���Ă��܂��B ����́A�h���b�v����̎t���R���|�[�l���g�ƃC�x���g�E���X�i���֘A�t���Ă��܂��B// �c���c����R���|�[�l���g�̊֘A�t�� new DropTarget(this,this); new DropTarget(routePanel,this);
�܂��A���Ⴂ�����₷���_�������Ă����܂��B
������R���|�[�l���g�̊֘A�t�����s���Ă��Ă��A���̏�ɈႤ�R���|�[�l���g���d�Ȃ��Ă���ꍇ�ɂ͂c���c�͖����ƂȂ�܂��B
�Ⴆ�A���̃T���v���� JButton ����V�K�lj������Ƃ���ƁA���̃{�^���ɑ��Ăc���c���s���Ă������͂���܂���B
�d�Ȃ��đO�ʂɂ���R���|�[�l���g�ɑ���c���c�C�x���g�́A��������Ȃ�����Ƃ����āA���̌��̃R���|�[�l���g�ɂ͓`���Ȃ��悤�ł��B
import java.awt.*; import java.awt.dnd.*; import java.awt.datatransfer.*; import javax.swing.*; import java.io.*; /** * �h���b�O���h���b�v�̃T���v���E�v���O�����ł��D * * @author Musi_chan * ([email protected]) * @version 2000/11/16 19:49 */ public class SampleDnD extends JFrame implements DropTargetListener { /****************************************************************************** �t�B�[���h ******************************************************************************/ /** * ���C���E�p�l���̃C���X�^���X�ϐ��ł��D */ private JPanel routePanel; /****************************************************************************** �R���X�g���N�^ ******************************************************************************/ /** * �R���X�g���N�^�ł��D */ public SampleDnD() { this(""); } /** * �R���X�g���N�^�ł��D * * @param args �N�����̈����i���b�N���t�B�[�����j */ public SampleDnD(String args) { // ���b�N���t�B�[�����ێ��p���[�J���ϐ� String LAFName; // �e��E�B���h�E�ݒ� setLocation(50,25); setSize(360,280); setResizable(true); setTitle("Drag&Drop sample program."); getContentPane().setLayout(new BorderLayout()); //setIconImage(ICON.getImage()); setBackground(SystemColor.menu); setForeground(SystemColor.menuText); setDefaultCloseOperation(EXIT_ON_CLOSE); // ���b�N���t�B�[�����̔��� if(args.equals("windows")) { LAFName="com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; } else if(args.equals("motif")) { LAFName="com.sun.java.swing.plaf.motif.MotifLookAndFeel"; } else { LAFName="javax.swing.plaf.metal.MetalLookAndFeel"; } // ���C���E�p�l���̐ݒ�ƒlj� setRoutePanel(LAFName); getContentPane().add(routePanel,BorderLayout.CENTER); // ���C���E�E�B���h�E�̕\�� setVisible(true); } /****************************************************************************** ���\�b�h ******************************************************************************/ /****************************************************************************** �r���[ ******************************************************************************/ /** * ���C���E�p�l���̐ݒ�����郁�\�b�h�ł��D * * @param LAFName ���b�N���t�B�[���� */ private void setRoutePanel(String LAFName) { // ���b�N���t�B�[���ݒ� try { UIManager.setLookAndFeel(LAFName); } catch(ClassNotFoundException cnfe) { } catch(InstantiationException ie) { } catch(IllegalAccessException iae) { } catch(UnsupportedLookAndFeelException ulafe) { } // ���[�g�p�l���̃C���X�^���X���� routePanel=new JPanel(); // �c���c����R���|�[�l���g�̊֘A�t�� new DropTarget(this,this); new DropTarget(routePanel,this); } /** * ���_�C�A���O��\�����郁�\�b�h�ł��D * * @param message ���b�Z�[�W */ public void showInformationMessageDialog(String message) { // ���_�C�A���O�̕\�� JOptionPane.showMessageDialog(this,new JLabel(message) ,"Information...",JOptionPane.INFORMATION_MESSAGE); repaint(); } /** * �x���_�C�A���O��\�����郁�\�b�h�ł��D * * @param message �x�����b�Z�[�W */ public void showWarningMessageDialog(String message) { // �x���_�C�A���O�̕\�� JOptionPane.showMessageDialog(this,new JLabel(message) ,"Warning...",JOptionPane.WARNING_MESSAGE); repaint(); } /** * �G���[�_�C�A���O��\�����郁�\�b�h�ł��D * * @param message �G���[���b�Z�[�W */ public void showErrorMessageDialog(String message) { // �G���[�_�C�A���O�̕\�� JOptionPane.showMessageDialog(this,new JLabel(message) ,"Error...",JOptionPane.ERROR_MESSAGE); repaint(); } /****************************************************************************** �R���g���[�� ******************************************************************************/ /** * ���C�����\�b�h�ł��D�N�����ɌĂяo����܂��D * * @param args �R�}���h���C������ */ public static void main(String[] args) { // ���g�̃C���X�^���X�����i���A�v���̊J�n�j if(args.length==0) { new SampleDnD(); } else { new SampleDnD(args[0]); } } /** * �h���b�O���h���b�v�i�h���b�v���j�C�x���g�p���\�b�h�ł��D * �h���b�O��������o�����Ƃ��ɌĂяo����܂��D * * @param dtde �h���b�O���h���b�v�C�x���g */ public void dragEnter(DropTargetDragEvent dtde) { dtde.acceptDrag(DnDConstants.ACTION_COPY); } /** * �h���b�O���h���b�v�i�h���b�v���j�C�x���g�p���\�b�h�ł��D * �h���b�O���삪�h���b�v�Ȃ��̂Ƃ��ɌĂяo����܂��D * * @param dte �h���b�O���h���b�v�C�x���g */ public void dragExit(DropTargetEvent dte) { } /** * �h���b�O���h���b�v�i�h���b�v���j�C�x���g�p���\�b�h�ł��D * �h���b�O���삪�i�s���̂Ƃ��ɌĂяo����܂��D * * @param dte �h���b�O���h���b�v�C�x���g */ public void dragOver(DropTargetDragEvent dtde) { } /** * �h���b�O���h���b�v�i�h���b�v���j�C�x���g�p���\�b�h�ł��D * �h���b�O���삪�h���b�v�ŏI�������Ƃ��ɌĂяo����܂��D * * @param dte �h���b�O���h���b�v�C�x���g */ public void drop(DropTargetDropEvent dtde) { try { // �]�����ꂽ�f�[�^�̎擾 Transferable tr=dtde.getTransferable(); // �]���f�[�^���T�|�[�g�\�ȃf�[�^���ǂ������� if(tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { // �h���b�v���������� dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); // �]���f�[�^����t�@�C���̃��X�g�𒊏o java.util.List myList=(java.util.List)tr.getTransferData( DataFlavor.javaFileListFlavor); // ���X�g�v�f���P�ꂩ�ǂ������� // �����t�@�C���̃h���b�v�������̂ł���C����s�v if(myList.size()==1) { // ���X�g����t�@�C���̎��o�� File myFile=(File)myList.get(0); // �t�@�C���̐�p�X����\�� // ���ۂɂ́C���̂P�s��ύX����Ɨǂ� showInformationMessageDialog(myFile.getAbsolutePath()); // �h���b�v����𐳏�I�� dtde.getDropTargetContext().dropComplete(true); } else { // �u�v�f�������v�Ƃ����x����\�� showWarningMessageDialog("Too much elements."); // �h���b�v������ُ�I�� dtde.getDropTargetContext().dropComplete(false); } } else { showWarningMessageDialog("Unsupported."); // �h���b�v������͂˂��� dtde.rejectDrop(); } } catch (IOException ioe) { showErrorMessageDialog("I/O exception."); // �h���b�v������͂˂��� dtde.rejectDrop(); } catch (UnsupportedFlavorException ufe) { showErrorMessageDialog("Unsupported"); // �h���b�v������͂˂��� dtde.rejectDrop(); } } /** * �h���b�O���h���b�v�i�h���b�v���j�C�x���g�p���\�b�h�ł��D * ���[�U�����݂̃h���b�v�W�F�X�`���[��ύX�����Ƃ��ɌĂяo����܂��D * * @param dte �h���b�O���h���b�v�C�x���g */ public void dropActionChanged(DropTargetDragEvent dtde) { } } |