在悬停时更改颜色不起作用

时间:2017-10-20 17:17:06

标签: java rectangles

我有两个问题,我很抱歉这个可怕的头衔。第一个是当我更改它并尝试检测它时,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;
}

0 个答案:

没有答案