我最初構建了DatePicker。只要用戶點擊JtextField,日曆對話框就會在JTextField旁邊打開。如果一個人想輸入日期而不是選擇日期,那麼他應該先關閉打開的對話框,然後輸入日期。java swing DatePicker做錯了使用JTextField並且想要更改
下面是它的外觀:
public class DateTextField extends JTextField implements Observer {
public void update(Observable o, Object arg) {
Calendar calendar = (Calendar) arg;
DatePicker dp = (DatePicker) o;
setText(dp.formatDate(calendar));
}
public DateTextField() {
final Observer obs = this;
final JTextField tf = this;
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if(tf.isEditable()){
DatePicker dp = new DatePicker(obs);
Date selectedDate = dp.parseDate(tf.getText());
dp.setSelectedDate(selectedDate);
dp.start(tf);
}
}
});
}
我還沒有所示的DatePicker類,因爲這裏不是問題。問題是,一個人每次關閉日曆對話框來輸入日期都是非常令人煩惱的。相反,我想要做的只是在JtextField一側保留一個按鈕,並且只有當用戶點擊按鈕時,對話框纔會彈出。
但這樣做,我將需要的DatePicker來擴展JPanel類,我可以佈局的JTextField和側面的JButton側。但不幸的是,DatePicker類擴展了JtextField,並且我期待DatePicker成爲JtextField。有從JComponent轉換到JTextfield並在此DatePicker上調用get和setText()。
如果我必須要改變的DatePicker延長形式的JPanel那就處處打破我的申請。我想知道如果我可以打扮的JTextfield顯示側面的按鈕可能通過繪畫或什麼?這是可能的嗎?
爲什麼要重新發明輪子?你可以使用JXDatePicker(在SwingX項目中),它爲你做了所有繁重的工作:-) – kleopatra 2011-12-22 13:30:29
我早些時候嘗試過,它不允許用戶正確選擇年份或其他東西。這是我在1.5年前嘗試過的。因此建立了我自己的組件。現在,它的使用亂七八糟在我的代碼基地..尋找一些不涉及再次改變所有的地方.. – sethu 2011-12-22 13:52:10