[英]Change the color of a word in a applet when it is clicked
我需要做的是,当用户单击粉红色圆圈中间的“ 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);
}
}
(您首先需要确保正确编写所有方法名称,并且代码中没有任何错字。例如,您的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的解决方案来澄清问题的实质所在!)
这需要几个步骤。
使textcolor成为该类的一个字段
private Color textcolor = Color.BLACK;
让paint方法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(); }
那将是我第一个原始的解决方案草图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.