2017-08-11 17 views
-1

誰かが私にこれを助けてくれますか?私はJavaでプログラムを学習し、そのプログラムの1つをコピーしました。 「Hello Java!」テキストをクリックして画面にドラッグすることはできません。私はプログラムを含めましたが、どこが間違っているのか、私が迷っているのか分かりません。 私は投稿を見ました: "MouseDragged & MouseMovedはJavaアプレットでは動作しませんでしたが、それらのメソッドはすべて私のプログラムにあります。MouseDraggedは動作していません

//file: HelloJava3.java 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 


public class HelloJava3 { 

public static void main(String[] args) { 
    JFrame frame = new JFrame("HelloJava3"); 
    frame.add(new HelloComponent3("Hello, Java!")); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(300, 300); 
    frame.setVisible(true); 

} 

} 

class HelloComponent3 extends JComponent 
implements ActionListener, MouseMotionListener 
{ 
    String theMessage; 
    int messageX = 125, messageY = 95; //Coordinates of the message 

    JButton theButton; 

    int colorIndex; //Current index into someColors 
    static Color[] someColors = { 
      Color.black, Color.red,    Color.green, Color.blue, Color.magenta 
    }; 

public HelloComponent3(String message) { 
    theMessage = message; 
    theButton = new JButton("Change Color"); 
    setLayout(new FlowLayout()); 
    add(theButton); 
    theButton.addActionListener(this); 
    addMouseMotionListener(this); 
} 

public void paintComponent(Graphics g) { 
    g.drawString(theMessage, messageX, messageY); 
} 

public void mouseDgragged(MouseEvent e) { 
    messageX = e.getX(); 
    messageY = e.getY(); 
    repaint(); 
} 

public void mouseMoved(MouseEvent e) {} 

public void actionPerformed(ActionEvent e) { 
    // Did somebody push out button? 
    if (e.getSource() == theButton) 
     changeColor(); 
} 

synchronized private void changeColor() { 
    //Change the index to the next colour, awkwardly. 
    if (++colorIndex == someColors.length) 
     colorIndex = 0; 
    setForeground(currentColor()); // Use the new colour. 
    repaint(); 
} 

synchronized private Color currentColor() { 
    return someColors[colorIndex]; 
} 

@Override 
public void mouseDragged(MouseEvent arg0) { 
    // TODO Auto-generated method stub 

} 
} 
+0

よりもむしろコードをコピーし、これはさらにあなたを取得するような概念を学びます。質問を投稿する前に、関連するチュートリアルを検索して勉強してください(多くの場合、マウスリスナーとマウス動作リスナーをSwingで使用する方法を含む)。 –

+0

あなたはあなたがそれらを解決することから多くを学ぶことができる道に沿って行うコードとすべての間違いをコッピングすることによって。チュートリアルは素晴らしかったですが、デバッグが可能であることは確かです。投稿する前に回答を検索しました。 – Kalmiany

答えて

1

mouseDraggedメソッドがオーバーライドされていて、何もしていません。これを削除するか、定義する必要があります。オーバーライドされているものを削除し、@Overrideアノテーションを他のmouseDraggedメソッドに追加します。

これを削除します。

@Override 
public void mouseDragged(MouseEvent arg0) { 
    // TODO Auto-generated method stub 

} 

は、おそらくコードに次のように表示されます:

@Override 
public void mouseDragged(MouseEvent e) { 
    messageX = e.getX(); 
    messageY = e.getY(); 
    repaint(); 
} 
+0

ありがとう、私はあなたの説明とコードの平和から多くを学んだ。今すぐ動作します。 – Kalmiany

+0

喜んでお手伝いします。解決策の横にあるチェックマークをクリックして、これを正解としてください。コードを学習することは有益です。良い仕事を続けてください。 – dspano

関連する問題