前提
eclipse を用いて,Javaのコードを組んでいます。初心者です。
出来る限り現在の形を崩さずに,解決方法を見つけたいです。
少し見づらかったり,コードが非効率的なところは目をつむって頂けると幸いです。
実現したいこと
- マウスをドラッグし始めた時点の座標 (x0,y0)
- マウスをドラッグしている現行の座標 (x1, y1)
の二つを同時にドラッグ中にラベル(jl3)に表示するプログラムです。
※そのほか機能を実装していますが,気にしないでください
発生している問題・エラーメッセージ
マウスをドラッグし始めた座標(ドラッグの開始座標)をどうやって示すのかが分かりません。
該当のソースコード
java
1public static void main(String[] args) { 2 // TODO 自動生成されたメソッド・スタブ 3 4 5 6 JLabel jl1 = new JLabel(); 7 JLabel jl2 = new JLabel(); 8 JLabel jl3 = new JLabel(); 9 JButton jb = new JButton("ボタン"); 10 11 JFrame jf1 = new JFrame("課題6"); 12 jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 13 jf1.setSize(480,360); 14 jf1.setLocationRelativeTo(null); 15 JFrame jf2 = new JFrame("課題6"); 16 jf2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 17 jf2.setSize(480,360); 18 jf2.setLocationRelativeTo(null); 19 JFrame jf3 = new JFrame("課題6"); 20 jf2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 21 jf2.setSize(480,360); 22 jf2.setLocationRelativeTo(null); 23 24 JPanel cp = (JPanel)jf1.getContentPane(); 25 cp.setLayout(new GridLayout(2,1)); 26 27 28 JPanel cp1 = (JPanel)jf2.getContentPane(); 29 cp1.setLayout(new GridLayout(1,3));{ 30 //1段目ラベル部分のコード 31 32 jl1.setHorizontalAlignment(SwingUtilities.CENTER); 33 jl1.setText("ラベル1"); 34 jl2.setHorizontalAlignment(SwingUtilities.CENTER); 35 jl2.setText("ラベル2"); 36 37 cp1.add(jb); 38 cp1.add(jl1); 39 cp1.add(jl2); 40 } 41 cp.add(cp1); 42 43 JPanel cp2 = (JPanel)jf3.getContentPane(); 44 cp2.setLayout(new GridLayout());{ 45 //2段目ラベル部分のコード 46 47 jl3.setHorizontalAlignment(SwingUtilities.CENTER); 48 jl3.setText("MOUSE_MOVED:(x,y)"); 49 cp2.add(jl3); 50 51 } 52 cp.add(cp2); 53 54 jb.addMouseListener(new MyMouseListener1(){ 55 public void mouseClicked(MouseEvent e) { 56 } 57 public void mouseEntered(MouseEvent e) { 58 jl3.setText("MOUSE_ENTERED"); 59 } 60 public void mouseExited(MouseEvent e) { 61 jl3.setText("MOUSE_EXITED"); 62 } 63 public void mousePressed(MouseEvent e) { 64 } 65 public void mouseReleased(MouseEvent e) { 66 } 67 }); 68 69 jl1.addMouseListener(new MyMouseListener2() { 70 public void mouseClicked(MouseEvent e) { 71 } 72 public void mouseEntered(MouseEvent e) { 73 } 74 public void mouseExited(MouseEvent e) { 75 } 76 public void mousePressed(MouseEvent e) { 77 jl3.setText("MOUSE_PRESSED"); 78 } 79 public void mouseReleased(MouseEvent e) { 80 jl3.setText("MOUSE_RELEASED"); 81 } 82 }); 83 /////////////////////該当部分//////////////////////// 84 jl2.addMouseMotionListener(new MyMouseAdapter(){ 85 86 int x0; 87 int y0; 88 int x1; 89 int y1; 90 91 public void mouseDragged(MouseEvent e) { 92 x0 = e.getX(); 93 y0 = e.getY(); 94 x1 = e.getX(); 95 y1 = e.getY(); 96 jl3.setText("MOUSE_DRAGGED:("+x0+","+y0+")-("+x1+","+y1+")"); 97 } 98 ///////////////////////////////////////////// 99 public void mouseMoved(MouseEvent e) { 100 int x = e.getX(); 101 int y = e.getY(); 102 103 jl3.setText("MOUSE_MOVED:("+x+","+y+")"); 104 } 105 }); 106 107 jl2.addMouseListener(new MyMouseListener1(){ 108 public void mouseClicked(MouseEvent e) { 109 int count = e.getClickCount(); 110 if(count == 1) { 111 jl3.setText("MOUSE_CLICKED"); 112 }else { 113 jl3.setText("MOUSE_DOUBLE_CLICKED"); 114 } 115 116 } 117 public void mouseEntered(MouseEvent e) { 118 } 119 public void mouseExited(MouseEvent e) { 120 } 121 public void mousePressed(MouseEvent e) { 122 } 123 public void mouseReleased(MouseEvent e) { 124 } 125 }); 126 127 jf1.setVisible(true); 128 } 129 130} 131 132class MyMouseListener1 implements MouseListener{ 133 public void mouseClicked(MouseEvent e) { 134 } 135 public void mouseEntered(MouseEvent e) { 136 } 137 public void mouseExited(MouseEvent e) { 138 } 139 public void mousePressed(MouseEvent e) { 140 } 141 public void mouseReleased(MouseEvent e) { 142 } 143} 144 145class MyMouseListener2 implements MouseListener{ 146 public void mouseClicked(MouseEvent e) { 147 } 148 public void mouseEntered(MouseEvent e) { 149 } 150 public void mouseExited(MouseEvent e) { 151 } 152 public void mousePressed(MouseEvent e) { 153 } 154 public void mouseReleased(MouseEvent e) { 155 } 156} 157 158 159class MyMouseAdapter extends MouseAdapter{ 160 public void mouseDragged(MouseEvent e) { 161 } 162 public void mouseMoved(MouseEvent e) { 163 } 164 public void mouseClicked(MouseEvent e) { 165 } 166}
試したこと
マウスをクリックした時点の座標をイベント処理に組み込もうとしてみましたが,数値を引き継がないのでダメでした…

回答2件
あなたの回答
tips
プレビュー