有人可以帮我解决这个问题,我一直在读一本关于学习用Java编程的书,复制了他们的一个程序而你的工作是mouseDragged无法正常工作。无法单击“Hello Java!”文本并将其拖动到屏幕上。我已经包含了该程序,但我无法看到我出错的地方或我曾经迷失过的地方。 我看过帖子:" MouseDragged& MouseMoved无法在Java Applet"中工作,但这些方法都在我的程序中。
//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
}
}