我有MM/dd/yyyy
格式的datepicker组件,但我希望以dd/MM/yyyy
的形式在java中创建日期选择器。那么我在哪里可以获得建议或相关解决方案。请给出基本的想法。
在此先感谢..
答案 0 :(得分:3)
JXDatePicker
中您可以使用setFormats
更改日期格式。请参阅this page和this one。
如果您正在谈论从头开始编写自己的组件,那么您需要实现整个事情,这似乎有点浪费时间?
答案 1 :(得分:0)
尝试JCalendar
下载答案 2 :(得分:0)
Any+Time™ DatePicker/TimePicker AJAX Calendar Widget允许您以任何您喜欢的格式指定日期。它还具有WAI / ARIA键盘支持和广泛的CSS自定义选项,包括jQuery UI支持。
答案 3 :(得分:0)
我想分享我刚刚为我的项目编写的内容,我必须为可以就地编辑的JTable创建一个简单快速的日期编辑器,它也可以用作普通控件。 您可以看到可以修改的日期格式切换SimpleDateFormat中使用的字符串的顺序,但不要忘记切换范围数组。 这是代码:
public class DateControl extends JPanel {
@SuppressWarnings("unchecked")
private JComboBox<String>[] combos = new JComboBox[3];
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
final int ranges[][] = {{2012,2050},{1,12},{1,31}};
public DateControl() {
super();
combos[0] = new JComboBox<String>();
combos[1] = new JComboBox<String>();
combos[2] = new JComboBox<String>();
// Fill the combos
for (int i = 0; i<combos.length; i++)
for (int j = ranges[i][0]; j<ranges[i][1]; j++)
combos[i].addItem((j<9?"0":"")+Integer.toString(j));
this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));
for (JComboBox<String> c: combos) {
// Remove the arrow button from the combo boxes (optional)
c.setUI(new BasicComboBoxUI() {
protected JButton createArrowButton() {
return new JButton() {
public int getWidth() {
return 0;
}
};
}
});
this.add(c);
}
//This is just for a nice look touch (optional)
this.setBorder(BorderFactory.createRaisedBevelBorder());
// Set to today's date
setDate(new Date());
}
// Date argument constructor
public DateControl(Date date) {
this();
setDate(date);
}
public void setDate(Date d) {
String[] date = df.format(d).split("/");
for (int i=0;i<combos.length; i++)
combos[i].setSelectedItem(date[i]);
}
public Date getDate() {
String str = combos[0].getSelectedItem()+"/"+combos[1].getSelectedItem()+"/"+combos[2].getSelectedItem();
Date ret = null;
try {
ret = df.parse(str);
} catch (ParseException e) {e.printStackTrace();}
return ret;
}
}
然后它可以用作这样的单元格编辑器:
class DateCellEditor extends AbstractCellEditor implements TableCellEditor {
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
private DateControl dateControl;
public DateCellEditor() {
dateControl = new DateControl();
}
@Override
public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row,
int column) {
Date d = new Date();
try {
Object str = table.getValueAt(row, column);
if (str!=null)
d = df.parse((String)str);
} catch (ParseException e) {
e.printStackTrace();
}
dateControl.setDate(d);
return dateControl;
}
@Override
public Object getCellEditorValue() {
return df.format(dateControl.getDate());
}
}
新的单元格编辑器可以在您的表格列中使用,如下所示:
TableColumn c = myTable.getColumnModel().getColumn(0);
c.setCellEditor(new DateCellEditor());
我必须提醒你,这是一个单元格“编辑器”,它只会在单元格处于编辑状态时显示。日期值将由普通单元格“Renderer”显示为格式为yyyy / MM / dd的简单字符串。
我希望这一切对某人有所帮助:)。