SWING的日期控件的问题

liyuncdc 2007-09-12 11:10:35
请问一下JB里的日期控件吗?
我好像找不到啊。。
还有就是在网上找的S基于SWING的日期控件,好像没有获取年月日等相关的数据的函数。。
如果各位有好介绍的话。。可以发过我吗?
邮箱;liyuncdc@163.com
...全文
557 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyuncdc 2007-09-13
  • 打赏
  • 举报
回复
请问一下如何获取一周的日期(星期一到星期天)。。我曾经尝试过,但是不成功
yilinhust 2007-09-12
  • 打赏
  • 举报
回复

/****************************具体用法********************************/


// 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
// }
// }

yilinhust 2007-09-12
  • 打赏
  • 举报
回复
package com.newer.sims.util;

import javax.swing.*;
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();
}
}

liyuncdc 2007-09-12
  • 打赏
  • 举报
回复
看来只有自已顶起来

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧