如果鼠标悬停在jdatepicker按钮上,如何更改鼠标光标

时间:2019-02-01 10:27:50

标签: java windows mouse-pointer

当鼠标悬停在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 :(得分:0)

问题解决了。

我有一个在日期选择器之前创建的标签,并且它的位置似乎与jdatepicker按钮的位置重叠,所以光标不能识别出要作为jbutton的区域,而是标签。