質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

解決済

javaにおいて,マウスドラッグのイベント処理

Katagiri
Katagiri

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

2回答

1リアクション

1クリップ

489閲覧

投稿2022/07/19 15:47

編集2022/07/20 02:46

前提

eclipse を用いて,Javaのコードを組んでいます。初心者です。

出来る限り現在の形を崩さずに,解決方法を見つけたいです。
少し見づらかったり,コードが非効率的なところは目をつむって頂けると幸いです。

実現したいこと

- マウスをドラッグし始めた時点の座標 (x0,y0)
- マウスをドラッグしている現行の座標 (x1, y1)
の二つを同時にドラッグ中にラベル(jl3)に表示するプログラムです。
※そのほか機能を実装していますが,気にしないでください

発生している問題・エラーメッセージ

マウスをドラッグし始めた座標(ドラッグの開始座標)をどうやって示すのかが分かりません。

該当のソースコード

java

public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ JLabel jl1 = new JLabel(); JLabel jl2 = new JLabel(); JLabel jl3 = new JLabel(); JButton jb = new JButton("ボタン"); JFrame jf1 = new JFrame("課題6"); jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf1.setSize(480,360); jf1.setLocationRelativeTo(null); JFrame jf2 = new JFrame("課題6"); jf2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf2.setSize(480,360); jf2.setLocationRelativeTo(null); JFrame jf3 = new JFrame("課題6"); jf2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf2.setSize(480,360); jf2.setLocationRelativeTo(null); JPanel cp = (JPanel)jf1.getContentPane(); cp.setLayout(new GridLayout(2,1)); JPanel cp1 = (JPanel)jf2.getContentPane(); cp1.setLayout(new GridLayout(1,3));{ //1段目ラベル部分のコード jl1.setHorizontalAlignment(SwingUtilities.CENTER); jl1.setText("ラベル1"); jl2.setHorizontalAlignment(SwingUtilities.CENTER); jl2.setText("ラベル2"); cp1.add(jb); cp1.add(jl1); cp1.add(jl2); } cp.add(cp1); JPanel cp2 = (JPanel)jf3.getContentPane(); cp2.setLayout(new GridLayout());{ //2段目ラベル部分のコード jl3.setHorizontalAlignment(SwingUtilities.CENTER); jl3.setText("MOUSE_MOVED:(x,y)"); cp2.add(jl3); } cp.add(cp2); jb.addMouseListener(new MyMouseListener1(){ public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { jl3.setText("MOUSE_ENTERED"); } public void mouseExited(MouseEvent e) { jl3.setText("MOUSE_EXITED"); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }); jl1.addMouseListener(new MyMouseListener2() { public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { jl3.setText("MOUSE_PRESSED"); } public void mouseReleased(MouseEvent e) { jl3.setText("MOUSE_RELEASED"); } }); /////////////////////該当部分//////////////////////// jl2.addMouseMotionListener(new MyMouseAdapter(){ int x0; int y0; int x1; int y1; public void mouseDragged(MouseEvent e) { x0 = e.getX(); y0 = e.getY(); x1 = e.getX(); y1 = e.getY(); jl3.setText("MOUSE_DRAGGED:("+x0+","+y0+")-("+x1+","+y1+")"); } ///////////////////////////////////////////// public void mouseMoved(MouseEvent e) { int x = e.getX(); int y = e.getY(); jl3.setText("MOUSE_MOVED:("+x+","+y+")"); } }); jl2.addMouseListener(new MyMouseListener1(){ public void mouseClicked(MouseEvent e) { int count = e.getClickCount(); if(count == 1) { jl3.setText("MOUSE_CLICKED"); }else { jl3.setText("MOUSE_DOUBLE_CLICKED"); } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }); jf1.setVisible(true); } } class MyMouseListener1 implements MouseListener{ public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } } class MyMouseListener2 implements MouseListener{ public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } } class MyMouseAdapter extends MouseAdapter{ public void mouseDragged(MouseEvent e) { } public void mouseMoved(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } }

試したこと

マウスをクリックした時点の座標をイベント処理に組み込もうとしてみましたが,数値を引き継がないのでダメでした…

TN8001👍を押しています

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jimbe

2022/07/19 16:14

コードのマークダウンが妙なコトになってしまっているようで、表示が崩れています。 質問は編集出来ますし、プレビューもあるはずですので、「###該当のソースコード」より前にある ``` の行等を削除してコード部分のみが枠に入っているか見てみてください。
Katagiri

2022/07/19 16:32

ご指摘ありがとうございます。修正しました。 これで少しは見やすくなったかと思われます。
jimbe

2022/07/19 16:51

見易くなりました。ありがとうございます。
dodox86

2022/07/20 02:30

元が英語のものを日本語発音にすることの差はありますが、”drag"は一般的にはドラックとは言わず、ドラッグです。ドラッグアンドドロップ(drag and drop)のドラッグ。 また、ここで言うドラッグとは「マウスのボタンを押下したまま、ズリズリズリと引っ張ってボタンを離すまで」を指していますでしょうか。
Katagiri

2022/07/20 02:47

ご指摘ありがとうございます。 ご指摘の通り、ドラック→ドラッグのことでした。修正致しました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。