Search code examples
javawindowsmouse-cursor

How to change mouse cursor if mouse is over jdatepicker button


I'm trying to change the mouse cursor when the mouse is over the jdatepicker button, but it isn't working.

The cursor simply isn't changing.

This is for a windows application to allow users to select dates.

 UtilDateModel model = new UtilDateModel();

    model.setDate(TODAY.getYear(), TODAY.getMonthValue() - 1, TODAY.getDayOfMonth());
    model.setSelected(true);

    Properties p = new Properties();
    p.put("text.year", "Ano");
    p.put("text.month", "Mês");
    p.put("text.day", "Dia");
    p.put("text.today", "Hoje");


JDatePanelImpl panel = new JDatePanelImpl(model, properties);    
    JDatePickerImpl datePicker = new JDatePickerImpl(panel, new DateLabelFormatter());   
    datePicker.setBackground(Color.WHITE);
    datePicker.setTextEditable(true);

        datePicker.setBounds(bounds);   

    datePicker.getJFormattedTextField().addKeyListener(new KeyAdapter() {
        @Override
        public void keyTyped(KeyEvent e) {
            if (((JFormattedTextField) e.getSource()).getText().length() >= 10 ) {
                e.consume();
            }
        }
    });

    ((JButton) datePicker.getComponents()[1]).setEnabled(true);
    ((JButton) datePicker.getComponents()[1]).setIcon(CALENDAR);
    ((JButton) datePicker.getComponents()[1]).setText("");
    ((JButton) datePicker.getComponents()[1]).setBackground(Color.white);

    ((JButton) datePicker.getComponents()[1]).setPreferredSize(new Dimension(5, 15));

    ((JButton) datePicker.getComponents()[1]).addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent e) {
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
             ((JButton) datePicker.getComponents()[1]).setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        }

        @Override
        public void mouseExited(MouseEvent e) {
            ((JButton) datePicker.getComponents()[1]).setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        }
    });

Result:

Result

Expected:

Expected

Can someone help me? Thanks


Solution

  • Problem solved.

    I had a label that was being created before the datepicker, and it's location seemed to overlap that of the jdatepicker button, so the cursor wasn't recognizing the area to be the jbutton, but instead the label.