I am developing the game GUI now.
But I have a small problem during programming.
I make a button to start and centered the button.
And I override mouseEntered
and mouseExited
.
When I run the program, Image is positioned center but cursor reacted from a distance.
I don't know why image and cursor are not matched...
This is my Main code.
package PoET;
public class Main {
public static final int SCREEN_WIDTH=600;
public static final int SCREEN_HEIGHT=800;
public static void main(String[] args) {
// TODO Auto-generated method stub
new Display();
}
}
And this is my Display code.
package PoET;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Display extends JFrame {
private Image screenImage;
private Graphics screenGraphic;
private Image explainImage = new ImageIcon(Main.class.getResource("../images/explainSample.jpg")).getImage();
private Image introBackground = new ImageIcon(Main.class.getResource("../images/background.jpg")).getImage();
private JLabel menuBar = new JLabel(new ImageIcon(Main.class.getResource("../images/menuBar.png")));
private ImageIcon quitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/quitButtonBasic.png"));
private ImageIcon quitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/quitButtonPressed.png"));
private ImageIcon startButtonBasicImage = new ImageIcon(Main.class.getResource("../images/startButtonBasic.png"));
private ImageIcon startButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/startButtonEntered.png"));
private ImageIcon developerButtonBasicImage = new ImageIcon(Main.class.getResource("../images/developerButtonBasic.png"));
private ImageIcon developerButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/developerButtonEntered.png"));
private ImageIcon goButtonBasicImage = new ImageIcon(Main.class.getResource("../images/startButtonBasic.png"));
private ImageIcon goButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/startButtonEntered.png"));
private JButton quitButton = new JButton(
quitButtonBasicImage);
private JButton startButton = new JButton(
startButtonBasicImage);
private JButton developerButton = new JButton(
developerButtonBasicImage);
private JButton goButton = new JButton(
new ImageIcon(Main.class.getResource("../images/startButtonEntered.png")));
private int mouseX, mouseY;
private boolean isExplainScreen=false;
public Display() {
setUndecorated(true);
setTitle("RogueLike PoET");
setSize(Main.SCREEN_WIDTH, Main.SCREEN_HEIGHT);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBackground(new Color(0, 0, 0, 0));
setLayout(null);
//quitButton.setBounds(560, 30, 30, 30);
quitButton.setBounds(400, 200, 30, 30);
quitButton.setBorderPainted(false);
quitButton.setContentAreaFilled(false);
quitButton.setFocusPainted(false);
quitButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
quitButton.setIcon(quitButtonEnteredImage);
quitButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
quitButton.setIcon(quitButtonBasicImage);
quitButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
System.exit(0);
}
});
add(quitButton);
menuBar.setBounds(0, 0, 600, 30);
menuBar.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
mouseX=e.getX();
mouseY=e.getY();
}
});
menuBar.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
int x=e.getXOnScreen();
int y=e.getYOnScreen();
setLocation(x-mouseX,y-mouseY);
}
});
add(menuBar);
startButton.setBounds(150, 540, 300, 60);
startButton.setBorderPainted(false);
startButton.setContentAreaFilled(false);
startButton.setFocusPainted(false);
startButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
startButton.setIcon(startButtonEnteredImage);
startButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
startButton.setIcon(startButtonBasicImage);
startButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
startButton.setVisible(false);
goButton.setVisible(true);
introBackground=new ImageIcon(Main.class.getResource("../images/background2.jpg")).getImage();
isExplainScreen=true;
}
});
add(startButton);
developerButton.setBounds(150, 610, 300, 60);
developerButton.setBorderPainted(false);
developerButton.setContentAreaFilled(false);
developerButton.setFocusPainted(false);
developerButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
developerButton.setIcon(developerButtonEnteredImage);
developerButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
developerButton.setIcon(developerButtonBasicImage);
developerButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
developerButton.setVisible(false);
goButton.setVisible(true);
introBackground=new ImageIcon(Main.class.getResource("../images/background2.jpg")).getImage();
isExplainScreen=false;
}
});
add(developerButton);
goButton.setVisible(false);
goButton.setBounds(150, 720, 300, 60);
goButton.setBorderPainted(false);
goButton.setContentAreaFilled(false);
goButton.setFocusPainted(false);
goButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
goButton.setIcon(goButtonEnteredImage);
goButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
goButton.setIcon(goButtonBasicImage);
goButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mousePressed(MouseEvent e) {
goButton.setVisible(false);
introBackground=new ImageIcon(Main.class.getResource("../images/background2.jpg")).getImage();
isExplainScreen=true;
}
});
add(goButton);
Music introMusic = new Music("introMusic.mp3", true);
introMusic.start();
}
public void paint(Graphics g) {
screenImage = createImage(Main.SCREEN_WIDTH, Main.SCREEN_HEIGHT);
screenGraphic = screenImage.getGraphics();
screenDraw(screenGraphic);
g.drawImage(screenImage, 0, 0, null);
}
public void screenDraw(Graphics g) {
g.drawImage(introBackground, 0, 0, null);
paintComponents(g);
if(isExplainScreen) {
g.drawImage(explainImage, 50, 50,null);
}
this.repaint();
}
}