有人可以帮我解决这个问题,我一直在学习以Java编程的一本书,复制其中一个程序,并且它的工作原理是mouseDragged不起作用。无法点击'Hello Java!'文本并将其拖动到屏幕上。我已经包含了这个程序,但是我不知道我出了什么问题或者我错过了什么。 我看过这篇文章:“MouseDragged & MouseMoved不能在Java Applet中工作”,但这些方法都在我的程序中。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
}
}
而不是复制代码,学习概念,这将进一步得到你。在发布问题之前,还需要搜索并学习相关教程,因为通常会发现许多教程(包括如何在Swing中使用鼠标监听器和鼠标移动监听器)。 –
通过复制代码以及您在此过程中犯的所有错误,您可以从解决这些问题中学到很多东西。教程是伟大的,但能够调试更大,是的,我没有发布之前寻找答案。 – Kalmiany