ubuntuguy
asked on
Java Mouse Adapter - event handling -
Hi i have a JPane containing 100 JButtons. The initial rollover icon for each button is a right arrow. I need to change the rollover icon to a down arrow if the user clicks the right-mouse button, back to right arrow if clicked again and so on.
I created an inner class "MouseHandler". However it does not do anything when I click the right mouse button. Can you guys let me know what I'm doing wrong?
Thanks.
MouseHandler class starts at line 101
I created an inner class "MouseHandler". However it does not do anything when I click the right mouse button. Can you guys let me know what I'm doing wrong?
Thanks.
MouseHandler class starts at line 101
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
public class HomeOcean extends Ocean implements ActionListener {
private static final long serialVersionUID = 1L;
final boolean home = true;
boolean horizontal;
Coordinate coordinate;
Ship carrier, battleship, submarine, destroyer, patrolBoat;
final ImageIcon arrowDown = new ImageIcon("images/arrow_down.png");
final ImageIcon arrowRight = new ImageIcon("images/arrow_right.png");
public HomeOcean() {
super();
horizontal = true;
for(int x=1; x<=10; x++){
for(int y=1; y<=10; y++){
super.grid[x][y].setRollover(home);
}
}
super.grid[0][0].setOceanIcon(home);
carrier = new AircraftCarrier();
battleship = new Battleship();
submarine = new Submarine();
destroyer = new Destroyer();
patrolBoat = new PatrolBoat();
addMouseListener(new MouseHandler());
}
private void repaintCursor(boolean horizontal){
if(horizontal){
for(int x=1; x<=10; x++){
for(int y=1; y<=10; y++){
grid[x][y].setRolloverIcon(arrowRight);
//grid[x][y].setRolloverIcon(grid[x][y].arrowRight);
}
}
}
else{
for(int x=1; x<=10; x++){
for(int y=1; y<=10; y++){
//grid[x][y].setRolloverIcon(grid[x][y].arrowDown);
grid[x][y].setRolloverIcon(arrowDown);
}
}
}
}
public void setCoordinate(Coordinate coord){
this.coordinate = coord;
}
public void placeShip(Ship ship){
ship.placeShip(coordinate, horizontal, this.validPosition(coordinate, ship.size, horizontal));
}
public boolean validPosition(Coordinate coordinate, int size, boolean isHorizontal){
int x = coordinate.getX();
int y = coordinate.getY();
if(isHorizontal){
if(x+size>10){
return false;
}
boolean valid = true;
int position = x;
while(valid && position <= x+size){
if(super.grid[position][y].isFree())
position++;
else
valid = false;
}
return valid;
}
else{
if(y+size>10){
return false;
}
boolean valid = true;
int position = y;
while(valid && position <= y+size){
if(super.grid[x][position].isFree())
position++;
else
valid = false;
}
return valid;
}
}
public void actionPerformed(ActionEvent e) {
}
private class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent e){
if(e.getModifiers() == InputEvent.BUTTON3_MASK){
horizontal = !horizontal;
repaintCursor(horizontal);
repaint();
}
}
}
}
i the mousePressed() method getting called?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.