我需要做的是当用户点击" Java"在粉色圆圈的中间,它会将颜色从黑色变为红色。我的问题是我不知道该怎么做,而且我丢失了我的Java书,我正在等待一个人来邮件,所以我试图通过在线论坛工作,但是我没有。找到一个好的例子来使用。任何帮助或链接到其他示例将非常感谢!
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Circle extends JApplet{
public void inti()
{
getContentPane().setBackground(Color.white);
}
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.black);
g.drawOval(20, 20, 140, 140);
g.setColor(Color.pink);
g.fillOval(20,20,140,140);
g.setColor(Color.BLACK);
g.setFont(new Font("SansSerif",Font.BOLD, 25));
g.drawString("Java", 60, 95);
}
}
答案 0 :(得分:2)
(首先需要确保正确编写所有方法名称并且代码没有任何拼写错误。例如,init方法有错字:inti()
)。
然后,您需要确保您的applet类实现Runnable
“功能接口”以及MouseListener
接口。
然后你需要为每个或那些接口覆盖或实现抽象方法
由于您需要在发生鼠标点击事件时更改文字的颜色,因此您应该覆盖mouseClicked
以执行所需的操作
请务必repaint()
,以便您的更改生效。此外,请确保run()
方法重新绘制具有所需频率的形状
这是最终的解决方案:
public class Main extends JApplet implements Runnable, MouseListener {
//this member field will specify what color should be the text
//in every painting cycle
private Color textColor = Color.BLACK;
@Override
public void paint(Graphics g) {
g.setColor(Color.black);
g.drawOval(20, 20, 140, 140);
g.setColor(Color.pink);
g.fillOval(20, 20, 140, 140);
g.setColor(Color.BLACK);
g.setColor(textColor);
g.setFont(new Font("SansSerif", Font.BOLD, 25));
g.drawString("Java", 60, 95);
}
@Override
public void init() {
//screen size --modify it as desired
this.setSize(200, 200);
getContentPane().setBackground(Color.white);
addMouseListener(this);
}
public void run() {
while ( true ) {
repaint();
try {
Thread.sleep(17); //specifies repaint frequency
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX(), y = e.getY();
if ( x >= 60 && x <= 120 && y >= 80 && y <= 95 )
textColor = Color.RED;
else
textColor = Color.black;
repaint();
//you can use this to change the condition of the if statement as you desire
System.out.println("mouse clicked: x="+x+ " --- y="+y);
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
(感谢Alex's solution澄清问题的实际要求!)
答案 1 :(得分:2)
这需要几个步骤。
使textcolor成为类
的一个字段private Color textcolor = Color.BLACK;
让paint方法绘制值,然后调用它
g.setColor(textcolor);
g.setFont(new Font("SansSerif",Font.BOLD, 25));
g.drawString("Java", 60, 95);
实现Mouselistener接口
public class Circle extends JApplet implements MouseListener{
使用Mouselistener
初始化类public void inti()
{
addMouseListener(this);
getContentPane().setBackground(Color.white);
}
添加方法mouseClicked
mouseClicked(MouseEvent e){
e.GetX();
e.GetY(); // Get the Clickcoordinates and check if its inside the circle
if(//Inside the cirle){
textcolor = Color.RED;
}
else{
textcolor = Color.BLACK;
}
// Make the class refrech its content
repaint();
}
这将是我解决方案的第一个原始草图。