Как изменить курсор мыши, если мышь находится над кнопкой jdatepicker - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь изменить курсор мыши, когда указатель мыши находится над кнопкой jdatepicker, но она не работает.

Курсор просто не меняется.

Этодля приложения Windows, позволяющего пользователям выбирать даты.

 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

Ожидаемый:

Expected

Может кто-нибудь мне помочь?Спасибо

1 Ответ

0 голосов
/ 01 февраля 2019

Проблема решена.

У меня была метка, которая создавалась до выбора даты, и ее расположение, казалось, перекрывало метку кнопки jdatepicker, поэтому курсор не распознал область, являющуюся кнопкой j,но вместо метки.

...