この記事では、Javaが実装した写真を選択およびドラッグしてドロップすることができるパネル関数について説明します。次のように、参照のために共有してください。
私は今日フォーラムに投稿を見て、スイングのマップをドラッグするような写真をドラッグアンドドロップしたいと考えています。基本的なアイデアを提供する最も単純な実装を以下に示します。
javax.swing。*; javax.swing.filechooser.filenameextensionfilter; Import java.awt。*; import java.awt.event.mousevent; Import java.awt.event.mouseListener; Import java.awt.event.Event.Event。フォームに。使用方法:フォームの空白スペースをダブルクリックして、[画像]ダイアログボックスを開きます。写真を開いた後、フォームに写真をドラッグアンドドロップできます。 * / @suppresswarnings( "serial")パブリッククラスのdragingFrameはjframe { /*** constructor** @throws headlessexceptionを拡張しますか? ? ? */ public dragingFrame()throws headLessException {this.setDefaultCloseoperation(exit_on_close); getContentPane()。setLayout(new borderlayout()); getContentPane()。add(new ImagePanel()、borderlayout.center); } //プログラムエントリpublic static void main(string [] args)スロー例外{uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname()); dragingFrame frame = new DragingFrame(); frame.setsize(400、300); frame.setlocation(300、300); frame.setSresizable(false); frame.settitle( "www.vevb.comダブルクリックして画像を開き、ドラッグアンドドロップ"); frame.setVisible(true); }}/***画像をドラッグアンドドロップできるパネル*/@suppresswarnings( "serial")class imagepanel拡張jpanel {private dragstatus status = dragstatus.ready; //ステータスプライベート画像画像をドラッグします。 //表示される画像プライベートポイント画像ポジション= new Point(0、0)、//画像の現在の位置= new Point(0、0)、//各ドラッグの開始時の画像の位置(つまり、最後のドラッグの後の位置)ムース誘導配置。 //各ドラッグの開始時のマウスの位置ImagePanel(){addMousElistener(){//マウスのパブリックボイドMouseClickededをダブルクリックするときに画像を開く(MouseEvent E){if(e.getClickCount()== 2){openimage(){openimage();マウスエベントe){dragstatus.dragging = e.getpoint(){e.getlocation.}}} // dragstatus.dragging){status = dragstatus.ready; addmousemotionListener(new MousemotionListener(){// Javaにはドラッグアンドドロップイベントがあります。このイベントで画像位置を移動しますPublic void MousedRagged(MouseEvent E){if(status == dragstatus.dragging){moveimage(e.getpoint());} } /***写真を移動します。実際、描画作業はpaintComponent()で行われ、イメージの位置を計算するだけでメソッドを呼び出します。 * * @Param Point Current Mouse Position */ private void MoveImage(ポイントポイント){//画像の現在の位置は、画像の開始位置とマウスの位置のオフセットに等しくなります。 ImagePosition.setLocation(ImageStartPosition.getX() +(Point.getX() - MousestartPosition.getX())、ImageStartPosition.gety() +(Point.gety() - MouseStartPosition.gety())); Repaint(); } //画像を開きますprivate void openimage(){system.out.println( "opening image ..."); file file = createfilechooser()。getSelectedFile(); if(file!= null){image = toolkit.getDefaultToolkit()。getImage(file.getabsolutepath()); if(image!= null){this.repaint(); }}} // [ファイル]ダイアログボックスを作成しますプライベートjfilechooser createfilechooser(){jfilechooser chooser = new jfilechooser(); chooser.setdialogtitle( "画像ファイルを選択してください..."); chooser.addchoosablefilter(new filenameextensionfilter( "common image format"、 "jpg"、 "jpeg"、 "gif"、 "png")); chooser.showopendialog(this); return chooser; } @Override Protected void paintComponent(Graphics G){super.paintComponent(g); if(image!= null){g.drawimage(image、(int)imageposition.getx()、(int)imageposition.gety()、this); }} private enum dragstatus {ready、dragging}}ランニング効果:
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。