質問
結論から言うと,ラベルに動的にテキストを表示できるようにしたいです.
具体的には,
- ボタンに入る → MOUSE_ENTERED
- ボタンから出る → MOUSE_EXITED
- マウスを押す → MOUSE_PRESSED
- マウスを離す → MOUSE_RELEASED
- マウスを動かす → MOUSE_MOVED:(0 , 0)
- ドラッグ → MOUSE_DRAGGED:(0 , 0) - (2 , 2)
- シングルクリック → MOUSE_CLICKED
- ダブルクリック → MOUSE_DOUBLE_CLICKED
と表示したいです.
このような動作をするメソッドは作成でき,System.out.println
で上記のような出力をすることはできました.
つまり,System.out.println
で出力している内容を,ラベルに表示したいということです.
しかし,この内容をラベルに出力する方法がどうしてもわかりません.
試したこと
System.out.println
で出力する方法を変数に代入して,それを
JLabel jp3 = new JLabel(); jp3.setText(naiyou); cp.add(jp3);
的な感じで,出力しようと思ったのですが,無理でした.
あらかじめ
あらかじめ言っておくと,以下のコードは,とりあえず動作することを優先して自力で作ったため,ぐちゃぐちゃです.
すみません.
コード
java
1package kadai; 2 3import java.awt.GridLayout; 4import java.awt.event.MouseAdapter; 5import java.awt.event.MouseEvent; 6import java.awt.event.MouseMotionAdapter; 7 8import javax.swing.JButton; 9import javax.swing.JFrame; 10import javax.swing.JLabel; 11import javax.swing.JPanel; 12import javax.swing.SwingUtilities; 13 14public class Kadai6 { 15 16 private JFrame jf = null; 17 private JPanel cp = null; 18 19 public static String naiyou = null; 20 21 private JFrame getJFrame() { 22 if (jf == null) { 23 jf = new JFrame(); 24 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 25 jf.setSize(480, 360); 26 jf.setLocationRelativeTo(null); 27 jf.setContentPane(getJContentPane()); 28 cp.setLayout(new GridLayout(2, 2)); 29 jf.setTitle("課題6"); 30 getButton(); 31 getLabel(); 32 } 33 return jf; 34 } 35 36 private JPanel getJContentPane() { 37 if (cp == null) { 38 cp = new JPanel(); 39 } 40 return cp; 41 } 42 43 void getButton() { 44 JButton jb = new JButton("ボタン"); 45 jb.addMouseListener(new MyMouseAdapterB()); 46 cp.add(jb); 47 } 48 49 void getLabel() { 50 51 JLabel jp1 = new JLabel("パネル1"); 52 JLabel jp2 = new JLabel("パネル2"); 53 54 // ↓このラベルに表示したいです 55 JLabel jp3 = new JLabel(); 56 57 jp1.setHorizontalAlignment(SwingUtilities.CENTER); 58 jp2.setHorizontalAlignment(SwingUtilities.CENTER); 59 jp3.setHorizontalAlignment(SwingUtilities.CENTER); 60 61 jp1.addMouseListener(new MyMouseAdapterP1()); 62 jp2.addMouseMotionListener(new MyMouseAdapterP2()); 63 64 cp.add(jp1); 65 cp.add(jp2); 66 cp.add(jp3); 67 } 68 69 class MyMouseAdapterB extends MouseAdapter { 70 // マウスが入った 71 public void mouseEntered(MouseEvent e) { 72 System.out.println("MOUSE_ENTERED"); 73 } 74 // マウスが出た 75 public void mouseExited(MouseEvent e) { 76 System.out.println("MOUSE_EXITED"); 77 } 78 } 79 80 class MyMouseAdapterP1 extends MouseAdapter { 81 // マウスを押した 82 public void mousePressed(MouseEvent e) { 83 System.out.println("MOUSE_PRESSED"); 84 85 } 86 // マウスを離した 87 public void mouseReleased(MouseEvent e) { 88 System.out.println("MOUSE_RELEASED"); 89 } 90 } 91 class MyMouseAdapterP2 extends MouseMotionAdapter { 92 // マウスムーブ 93 public void mouseMoved(MouseEvent e) { 94 int x = e.getX(); 95 int y = e.getY(); 96 System.out.println("MOUSE_MOVED:(" + x + "," + y + ")"); 97 } 98 99 100 // マウスを押した 101 public boolean mousePressed(MouseEvent e) { 102 return true; 103 } 104 // マウスを離した 105 public boolean mouseReleased(MouseEvent e) { 106 return true; 107 } 108 // ドラッグ 109 public void mouseDragged(MouseEvent e) { 110 int xStart=0, yStart=0, xEnd=0, yEnd=0; 111 112 if (mousePressed(e)) { 113 xStart = e.getX(); 114 yStart = e.getY(); 115 } 116 if (mouseReleased(e)) { 117 xEnd = e.getX(); 118 yEnd = e.getY(); 119 } 120 System.out.println("MOUSE_DRAGGED:(" + xStart + "," + yStart + ")-(" + xEnd + "," + yEnd + ")"); 121 } 122 // シングルクリック 123 public void mouseClicked(MouseEvent e) { 124 if(e.getClickCount()==1){ 125 System.out.println("MOUSE_CLICKED"); 126 } 127 if(e.getClickCount()==2){ 128 System.out.println("MOUSE_DOUBLE_CLICKED"); 129 } 130 } 131 } 132 133 public static void main(String[] args) { 134 // TODO 自動生成されたメソッド・スタブ 135 SwingUtilities.invokeLater(new Runnable() { 136 public void run() { 137 Kadai6 application = new Kadai6(); 138 application.getJFrame().setVisible(true); 139 } 140 }); 141 } 142}
現在のパネルの出力結果
出力結果(System.out.printlnで出力している内容)
java
1MOUSE_PRESSED 2MOUSE_RELEASED 3MOUSE_ENTERED 4MOUSE_EXITED 5MOUSE_MOVED:(231,54) 6MOUSE_MOVED:(229,54) 7MOUSE_DRAGGED:(182,94)-(182,94)
以上,よろしくお願いいたします.
回答1件