I’m working on a game and for the menus I’m using Canvases to draw the stuff for that menu.
For options and buttons I’m using Graphics on the canvas to draw a string. How to detect the mouse clicking the string?
options canvas:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
public class OptionsScreen extends Canvas{
private static final long serialVersionUID = 1L;
private Mouse ms = new Mouse();
private int optionPos = 275;
private int volLev = 100;
private int screenX = 800;
private int screenY = 600;
private JFrame mainWindow;
public OptionsScreen(JFrame f)
{
mainWindow = f;
}
public void paint(Graphics g) {
g.setFont(new Font("JI-Pelter", Font.PLAIN, 24));
g.setColor(Color.lightGray);
//Draw strings
//Music and Sound
g.drawString("Music:", optionPos, 150); g.setColor(Color.yellow); g.drawString("On", optionPos + 100, 150); g.setColor(Color.white); g.drawString("Off", optionPos + 175, 150); g.setColor(Color.lightGray);
g.drawString("Sound:", optionPos, 200); g.setColor(Color.yellow); g.drawString("On", optionPos + 100, 200); g.setColor(Color.white); g.drawString("Off", optionPos + 175, 200); g.setColor(Color.lightGray);
g.drawString("Volume Level:", optionPos, 250); g.setColor(Color.white); g.drawString(volLev + "%", optionPos + 175, 250); g.setColor(Color.lightGray);
//OpenGL Settings
g.drawString("Advanced OpenGL:", optionPos, 300); g.setColor(Color.white); g.drawString("On", optionPos + 225, 300); g.setColor(Color.yellow); g.drawString("Off", optionPos + 300, 300); g.setColor(Color.lightGray);
//Screen Settings
g.drawString("Game Resolution:", optionPos, 350); g.setColor(Color.white); g.drawString(screenX + "x" + screenY, optionPos + 200, 350); g.setColor(Color.lightGray);
this.addMouseListener(ms);
}
}
class Mouse implements MouseListener
{
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
Just use a JLabel for the strings. Then you can add a MouseListener to the label.