在JDatePicker的文本字段中用于检测移动/单击的适当的侦听器是什么?

时间:2019-01-22 20:40:54

标签: java swing

在我的GUI中,我有几组单选按钮,每组都有两个单选按钮。第一个单选按钮与文本正常,而另一个仅是一个单选按钮,并且其旁边有JDatePicker。我想模仿单选按钮的行为,以使JDatePicker看起来与之耦合,因此,当它悬停在JDatePicker的文本字段上时,单选按钮会亮起,并且在单击时,单选按钮会更改为该字段。

GUI Screenshot

我已经创建了一个动作侦听器并将其添加到JDatePickerImpl,并尝试侦听该组件,但是什么也没发生-单击文本字段或按钮时不会触发侦听器。

UtilDateModel model = new UtilDateModel();
    Properties p = new Properties();
    p.put("text.today", "Today");
    p.put("text.month", "Month");
    p.put("text.year", "Year");
    JDatePanelImpl datePanel = new JDatePanelImpl(model, p);
    // Don't know about the formatter, but there it is...
    fromDatePicker = new JDatePickerImpl(datePanel, new 
DateLabelFormatter());
    fromDatePicker.setBounds(45, 186, 170, 26);
    JFormattedTextField textField = 
fromDatePicker.getJFormattedTextField();
    textField.setFont(new Font("Tahoma", Font.PLAIN, 14));

nowRdBtn = new JRadioButton("Right This Second");
    nowRdBtn.setBounds(22, 235, 139, 29);
    buttonGroup_1.add(nowRdBtn);
    nowRdBtn.setFont(new Font("Tahoma", Font.PLAIN, 14));


TTListener listener = new TTListener();
    fromDatePicker.addActionListener(listener);


private class TTListener implements ActionListener {        
    @Override
    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == fromDatePicker) {
            System.out.print("Done");
            beginningRdBtn.setEnabled(false);
            fromDateRdBtn.setEnabled(true);
        }
    }
}

各个组件均按预期工作,但所需的耦合行为不起作用。从JDatePickerImpl获取相应的JFormattedTextField并进行监听也不会产生任何结果。

1 个答案:

答案 0 :(得分:0)

我猜您使用的JDatePickerImplorg.jdatepicker.impl.JDatePickerImpl。在这里,ActionListener仅在用户选择日期时才会触发。您应该尝试添加MouseListener并实现mouseEntered()mouseExited()