请问一下JB里的日期控件吗?
我好像找不到啊。。
还有就是在网上找的S基于SWING的日期控件,好像没有获取年月日等相关的数据的函数。。
如果各位有好介绍的话。。可以发过我吗?
邮箱;[email protected]
我好像找不到啊。。
还有就是在网上找的S基于SWING的日期控件,好像没有获取年月日等相关的数据的函数。。
如果各位有好介绍的话。。可以发过我吗?
邮箱;[email protected]
解决方案 »
- 求赐教背包算法
- 命令提示:ticketssystem.java :23:找不到符号 符号:方法currentThread() 位置:类j
- 一道SCJP的题目
- 在sturts中,Jsp页面表单中定义<s:hidden name="where"/>,那么在其对应提交的Action类中可以使用where对象吗?(他是查询语句的一个条件)
- JAVA笔试题--内存管理和重载问题
- JAVA跨类引用问题
- [求助]如何获取系统盘符
- 怎么改?
- 雷老虎,我实在想不通下面代码了:为什么产生产生的号码一样?(有时候前几组一样,后几组一样)
- 再请教
- 请问一下监听器那里的问题
- Head First Design Patterns整本书终于看完了,发帖庆祝。
import java.awt.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.*;
import javax.swing.table.*;public class CalendarWindow extends JDialog{
String[] days = {"01", "02", "03", "04", "05","06" ,"07","08", "09", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24","25","26", "27", "28", "29", "30", "31"};
String[] colName = {" 日"," 一"," 二"," 三"," 四"," 五"," 六"};
String[] months = {"01","02","03","04","05","06",
"07","08","09","10","11","12"};
Object[][] rows = new Object[6][7];
java.sql.Date date;
java.util.Calendar calendar = Calendar.getInstance();
JPanel contentPane;
JPanel pnlNorth = new JPanel(new FlowLayout());
JPanel pnlCenter = new JPanel(null);
JComboBox cboMonth = new JComboBox(months);
SpinnerModel smode;
JSpinner spnYear;
boolean ok = true;
JTable tabCalendar = new JTable(rows, colName);
JTableHeader tabHeader = tabCalendar.getTableHeader();
/*构造方法*/
public CalendarWindow(Frame frame,int x, int y){
super(frame,"日期选择",true);
this.setUndecorated(true); //如果没有启用 dialog 装饰,则为 true
contentPane = (JPanel)this.getContentPane();
contentPane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
contentPane.setBackground(Color.WHITE);
pnlNorth.setBackground(Color.WHITE);
cboMonth.setFont(new Font("宋体",Font.PLAIN,13));
cboMonth.setBackground(Color.WHITE);
// cboMonth.setBounds(25,10,50,25);
cboMonth.setPreferredSize(new Dimension(58,21));
Calendar c = Calendar.getInstance();
smode = new SpinnerNumberModel(c.get(Calendar.YEAR),1980,2099,1);
spnYear = new JSpinner(smode);
cboMonth.setSelectedIndex(c.get(Calendar.MONTH));
// spnYear.setBounds(105,10,50,25);
spnYear.setPreferredSize(new Dimension(60,21));
pnlNorth.add(spnYear);
pnlNorth.add(cboMonth); tabHeader.setResizingAllowed(false);
// try{
// String look = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
// UIManager.setLookAndFeel(look);
// SwingUtilities.updateComponentTreeUI(this);
// }catch(Exception e){
// e.printStackTrace();
// } tabHeader.setBounds(0,0,205,20);
tabHeader.setForeground(Color.blue);
tabCalendar.setBounds(5,21,200,150);
tabCalendar.setBorder(null);
// tabCalendar.setGridColor(Color.black);
tabCalendar.getTableHeader().setReorderingAllowed(false);//设置不允许拖动表头
tabCalendar.addMouseListener(new Tml());
tabCalendar.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);//一次只能选择一个列表索引
tabCalendar.setCellSelectionEnabled(true); //设置是否允许单选单元格
tabCalendar.setSelectionBackground(Color.blue);
tabCalendar.setSelectionForeground(Color.RED);
// tabCalendar.setForeground(Color.BLUE);
tabCalendar.setDragEnabled(false);//该属性必须为 true 才能确保启用对此组件的自动拖动处理
tabCalendar.setShowGrid(false); //设置表是否绘制单元格周围的网格线
tabCalendar.setSurrendersFocusOnKeystroke(false);//此属性为 false,且 JTable 保留焦点,除非单击了单元格
tabCalendar.setToolTipText("单击鼠标选择日期.");
pnlCenter.add(tabHeader);
pnlCenter.add(tabCalendar);
contentPane.add("Center",pnlCenter);
contentPane.add("North", pnlNorth); /*JSpinner对象注册监听器*/
spnYear.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent ce){
clearAll(6,7);
changeEvent();
}
}) ;
cboMonth.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
clearAll(6,7);
changeEvent();
}
});
changeEvent();
this.setAlwaysOnTop(true);
this.setBounds(x,y,205,153);
// this.setVisible(true); }
/*JTable监听器类*/
class Tml extends MouseAdapter{
public void mouseClicked(MouseEvent e){
int row = tabCalendar.getSelectedRow();
int cols = tabCalendar.getSelectedColumn();
String days = ((String)tabCalendar.getValueAt(row,cols)).trim();
if(days != null){
if(days.length()>0){
String month = String.valueOf((cboMonth.getSelectedIndex()+1));
String year = spnYear.getValue().toString();
setDate(year, month, days);
CalendarWindow.this.setVisible(false);
}else{
CalendarWindow.this.dispose();
}
}else{
CalendarWindow.this.dispose();
}
}
} public void showDateDialog(){
this.setVisible(true);
} public void setDate(String year, String month, String days){
date = java.sql.Date.valueOf(year + "-" + month + "-" + days);
ok = false;
} public java.sql.Date getDate(){ return date;
} /*清除日历表*/
public void clearAll(int rows, int cols){
for (int i = 0; i < rows ; i++){
for (int j = 0; j < cols; j++){
tabCalendar.setValueAt("",i,j);
}
}
} /*重新布置日历表*/
public void changeEvent(){ Object objYear = spnYear.getValue();
int year = Integer.parseInt(objYear.toString());
int month = cboMonth.getSelectedIndex();
int days_of_month = getDaysOfMonth(year,month+1);
calendar.set(year,month,1);
boolean isOne = false;
int weekday = calendar.get(Calendar.DAY_OF_WEEK);
int dayNumber = 0; for (int i = 0; i < 6; i++) {
for (weekday = (isOne ? 1 : weekday); weekday < 8; weekday++) {
if (dayNumber >= days_of_month ){
break;
}
tabCalendar.setValueAt(days[dayNumber], i, weekday - 1);
dayNumber++;
isOne = true;
}
if (dayNumber >= days_of_month){
break;
}
} } /*获取某年某月的最大天数*/
public int getDaysOfMonth(int year, int month){
GregorianCalendar gc = new GregorianCalendar(year,month-1,1,0,0,0);
int[] daysOfMonth = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if(gc.isLeapYear(year)){
daysOfMonth[2]=29;
}
return daysOfMonth[month];
}
public static void main(String[] args){
new CalendarWindow(new JFrame(),100,100).showDateDialog();
}
}
/****************************具体用法********************************/
// public void mouseClicked(MouseEvent me){
// if (me.getSource() == txtStartTime){
// //获得弹出日历窗口的位置
// Point allPoint = UserLoginRecord.this.getLocationOnScreen();//获得组件的位置,形式是一个指定屏幕坐标空间中组件左上角的一个点
// Point point = txtStartTime.getLocation();// int x = point.x + allPoint.x;
// int y = point.y + allPoint.y + 55;// CalendarWindow cal = new CalendarWindow(null,x,y);
// cal.showDateDialog();// if (cal.getDate() != null){
// java.util.Date date;// java.sql.Date sqldate = cal.getDate();// date = new java.util.Date(sqldate.getYear(),sqldate.getMonth(),sqldate.getDate(),0,0,1);// txtStartTime.setValue(date); //JFormattedTextField
// }
// }