我有两个问题,我很抱歉这个可怕的头衔。第一个是当我更改它并尝试检测它时,cs enum不起作用。第二个问题是,即使枚举有效,矩形也不会改变颜色。这是代码:
public class MenuState extends State implements ActionListener, MouseListener, MouseMotionListener {
public String start = "/images/start.png/";
public String exit = "/images/exit.png/";
public String bg = "/images/bg.jpg/";
public float alpha = 1f;
Timer timer = new Timer(20, this);
//public JButton bu = new JButton("suh");
Color c = Color.lightGray;
Boolean hover = false;
Random r = new Random();
Random r2 = new Random();
bu cs = bu.RELEASED;
private AudioPlayer bh;
float r1 = r.nextFloat();
float g2 = r.nextFloat();
float b = r.nextFloat();
public MenuState() {
}
private enum bu{
RELEASED,
HOVER
}
@Override
public void tick() {
}
@Override
public void render(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
alpha += -0.01f;
if (alpha <= 0) {
alpha = 0;
timer.stop();
}
g2d.setColor(Color.black);
g2d.fillRect(0, 0, 1280, 720);
g2d.setColor(c);
g2d.fillRect(0, 0, 1280, 720);
g2d.drawImage(getImage(bg), 0, 0, null);
Rectangle button = new Rectangle(new Dimension(380,90));
g.setColor(c);
if(cs == cs.HOVER) {
System.out.println("s");
g.setColor(Color.gray);
g.fillRect(button.x,button.y,button.width,button.height);
}
g2d.fillRect(1000/2,300, button.width, button.height);
g2d.fillRect(1000 / 2, 397, button.width, button.height);
g2d.setColor(new Color(241, 196, 15));
g2d.setFont(new Font("SansSerif", Font.PLAIN, 120));
g2d.drawString("-1", 1280 / 2, 120);
//g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
}
public Image getImage(String s){
ImageIcon i = new ImageIcon(getClass().getResource(s));
return i.getImage();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
int mx = e.getX();
int my = e.getY();
if(mx >= 1000 / 2 && mx <= 1000 / 2 + 380) {
if(my >= 300 && my <= 390) {
bh = new AudioPlayer("/images/click1.mp3/");
bh.play();
State.setState(new GameState());
}
}
if(mx >= 1000 / 2 && mx <= 1000 / 2 + 380) {
if(my >= 397 && my <= 487) {
System.exit(1);
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
int mx = e.getX();
int my = e.getY();
if(mx >= 1000 / 2 && mx <= 1000 / 2 + 380) {
if(my >= 300 && my <= 390) {
cs = cs.HOVER;
}
}
if(!(mx >= 1000 / 2) && !(mx <= 1000 / 2 + 380)) {
if(!(my >= 300) && !(my <= 390)) {
cs = cs.RELEASED;
}
}
}
public Color getColor() {
return c;
}
public void setColor(Color color) {
this.c = color;
}
}
编辑:
我尝试添加getter和setter,但我认为它确实没有改变任何东西。他们在这里:
public void setCS(bu s) {
this.cs = s;
}
public bu getBU() {
return cs;
}