調用日歷的問題 我只是問Java怎么實現像VB那樣調用出日期選擇對話框,難道只有自己寫個類嗎?JBUILDER中沒有已經實現的控件嗎? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 jb里面只有个可供选择的很难看的一个日期选择对话框JCDateChooser需要import com.klg.jclass.util.calendar.*;你自个试试看就知道了 你可以通过jb的Design将这这个控件添加到当前Swing栏里面去的说,在工具包Sitraka JClass Gauge 4.5.1里面,属于javabeans,所在目录com/klg/jclass/util/calendar/resources/JCDateChooser import java.awt.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.lang.*;public class DatePopup extends JDialog implements java.awt.event.ActionListener{ private JPanel mPanel1 = new JPanel(); private JPanel mPanel2 = new JPanel(); private JPanel mPanel3 = new JPanel(); private JPanel mPanel4 = new JPanel(); private JButton mNewButton; private JTextField mText; private int mDay; private int mMonth; private int mYear; private int mTheDate; private int i = 0; private int j = 0; public DatePopup(JTextField pText) { super(new JFrame(),"日期选择",true); this.mText = pText; try { DatePopupInit(); pack(); } catch(Exception e) { e.printStackTrace(); } } /** * 控件的初始化方法。 */ private void DatePopupInit() { //设置主窗口布局 Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); mPanel1.setLayout(new BorderLayout()); mPanel1.setBorder(new TitledBorder(BorderFactory.createLineBorder(Color.white,1),"日期选择")); Calendar nowCalendar = Calendar.getInstance(); this.mTheDate = nowCalendar.get(Calendar.DAY_OF_WEEK); this.mDay = nowCalendar.get(Calendar.DAY_OF_MONTH); this.mMonth = nowCalendar.get(Calendar.MONTH); this.mYear = nowCalendar.get(Calendar.YEAR); //设置mPanel2 JComboBox comboMonth = new JComboBox(); comboMonth.setActionCommand("MonthSelect"); for(i=1;i<=12;i++) { comboMonth.addItem(i+"月"); if(i==(this.mMonth+1)) { comboMonth.setSelectedItem(i+"月"); } } comboMonth.addActionListener(this); JComboBox comboYear = new JComboBox(); comboYear.setActionCommand("YearSelect"); for(i=1900;i<=2050;i++) { comboYear.addItem(i+"年"); if(i==this.mYear) { comboYear.setSelectedItem(i+"年"); } } comboYear.addActionListener(this); mPanel2.setLayout(new FlowLayout()); mPanel2.add(comboMonth); mPanel2.add(comboYear); mPanel1.add(mPanel2,BorderLayout.NORTH); //设置mPanel3 mPanel3.setLayout(new GridLayout(7,7)); mPanel3.add(new JLabel("日",SwingConstants.CENTER)); mPanel3.add(new JLabel("一",SwingConstants.CENTER)); mPanel3.add(new JLabel("二",SwingConstants.CENTER)); mPanel3.add(new JLabel("三",SwingConstants.CENTER)); mPanel3.add(new JLabel("四",SwingConstants.CENTER)); mPanel3.add(new JLabel("五",SwingConstants.CENTER)); mPanel3.add(new JLabel("六",SwingConstants.CENTER)); Calendar calendar1 = Calendar.getInstance(); calendar1.set(this.mYear,this.mMonth+1,1); Calendar calendar2 = Calendar.getInstance(); calendar2.set(this.mYear,this.mMonth,1); int daysOfMonth; if(this.mMonth==11) { daysOfMonth = 31; } else { daysOfMonth = calendar1.get(Calendar.DAY_OF_YEAR) - calendar2.get(Calendar.DAY_OF_YEAR); } int firstDay = calendar2.get(Calendar.DAY_OF_WEEK); for(i=1;i<43;i++) { if(((i==firstDay)||(j!=0))&&(j<daysOfMonth)) { j++; mNewButton = new JButton((new String()).valueOf(j)); if(j==this.mDay) { mNewButton.setSelected(true); mNewButton.setEnabled(false); mNewButton.setBackground(new Color(84,215,4)); } mNewButton.addActionListener(this); mPanel3.add(mNewButton); } else { mPanel3.add(new JLabel()); } } mPanel1.add(mPanel3,BorderLayout.CENTER); //设置mPanel4 JButton confirmButton = new JButton("确定"); confirmButton.setActionCommand("confirm"); confirmButton.addActionListener(this); JButton cancelButton = new JButton("取消"); cancelButton.setActionCommand("cancel"); cancelButton.addActionListener(this); mPanel4.setLayout(new FlowLayout()); mPanel4.add(confirmButton); mPanel4.add(cancelButton); //设置contentpane contentPane.add(mPanel1,BorderLayout.CENTER); contentPane.add(mPanel4,BorderLayout.SOUTH); } /** * 监听事件响应。 */ public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); Object obj = e.getSource(); String temp = ""; if(cmd.equals("MonthSelect")) { JComboBox comMonth = (JComboBox)obj; temp = comMonth.getSelectedItem().toString(); temp = temp.substring(0,temp.length()-1); int tempMonth = Integer.parseInt(temp); this.mMonth = tempMonth-1; mypaint(); } else if(cmd.equals("YearSelect")) { JComboBox comYear = (JComboBox)obj; temp = comYear.getSelectedItem().toString(); temp = temp.substring(0,4); int tempYear = Integer.parseInt(temp); this.mYear = tempYear; mypaint(); } else if(cmd.equals("confirm")) { String pFinalDate = ""; if(this.mMonth<9) { pFinalDate = this.mYear + ":0" +(this.mMonth+1); } else { pFinalDate = this.mYear + ":" + (this.mMonth+1); } if(this.mDay<10) { pFinalDate = pFinalDate + ":0"+ this.mDay; } else { pFinalDate = pFinalDate + ":"+ this.mDay; } this.mText.setText(pFinalDate); this.dispose(); } else if(cmd.equals("cancel")) { this.dispose(); } else { int tempDay = Integer.parseInt(cmd); this.mDay = tempDay; mypaint(); //System.out.println(cmd); } } /** * 控件重新布局方法。 */ private void mypaint() { this.invalidate(); mPanel3.removeAll(); mPanel3.setLayout(new GridLayout(7,7)); mPanel3.add(new JLabel("日",SwingConstants.CENTER)); mPanel3.add(new JLabel("一",SwingConstants.CENTER)); mPanel3.add(new JLabel("二",SwingConstants.CENTER)); mPanel3.add(new JLabel("三",SwingConstants.CENTER)); mPanel3.add(new JLabel("四",SwingConstants.CENTER)); mPanel3.add(new JLabel("五",SwingConstants.CENTER)); mPanel3.add(new JLabel("六",SwingConstants.CENTER)); Calendar calendar1 = Calendar.getInstance(); calendar1.set(this.mYear,this.mMonth+1,1); Calendar calendar2 = Calendar.getInstance(); calendar2.set(this.mYear,this.mMonth,1); int daysOfMonth; if(this.mMonth==11) { daysOfMonth = 31; } else { daysOfMonth = calendar1.get(Calendar.DAY_OF_YEAR) - calendar2.get(Calendar.DAY_OF_YEAR); } int firstDay = calendar2.get(Calendar.DAY_OF_WEEK); j = 0; for(i=1;i<43;i++) { if(((i==firstDay)||(j!=0))&&(j<daysOfMonth)) { j++; mNewButton = new JButton((new String()).valueOf(j)); if(j==this.mDay) { mNewButton.setSelected(true); mNewButton.setEnabled(false); mNewButton.setBackground(new Color(84,215,4)); } mNewButton.addActionListener(this); mPanel3.add(mNewButton); } else { mPanel3.add(new JLabel()); } } mPanel1.add(mPanel3,BorderLayout.CENTER); this.validate(); }} 调用方法: JTextField temp=new JTextField();//日期选好后显示的TEXT控件 DatePopup pDialog = new DatePopup(temp); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = pDialog.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } pDialog.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); pDialog.setVisible(true); MyEclipse 8.x 关闭自动更新的问题 在另外一个jsp文件爱你用什么代码得到当前jsp文件选择的值 请教 关于数据输出到文档 为甚Point (double _x,double _y,double _z){}前面不能加void? 线程交替问题 正则表达式??? 分享+散分 请问谁有jive或者pet store的uml图 哪里能下载poi包 例子学着做,做不出来。请指导。 一个软件编程人员的观点,不知对错,请大家讨论! 试验了两天——关于tomcat配置的问题——还是没弄好
需要import com.klg.jclass.util.calendar.*;
你自个试试看就知道了
在工具包Sitraka JClass Gauge 4.5.1里面,属于javabeans,
所在目录com/klg/jclass/util/calendar/resources/JCDateChooser
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.lang.*;public class DatePopup extends JDialog implements java.awt.event.ActionListener
{
private JPanel mPanel1 = new JPanel();
private JPanel mPanel2 = new JPanel();
private JPanel mPanel3 = new JPanel();
private JPanel mPanel4 = new JPanel();
private JButton mNewButton;
private JTextField mText;
private int mDay;
private int mMonth;
private int mYear;
private int mTheDate;
private int i = 0;
private int j = 0; public DatePopup(JTextField pText)
{
super(new JFrame(),"日期选择",true);
this.mText = pText;
try
{
DatePopupInit();
pack();
}
catch(Exception e)
{
e.printStackTrace();
}
} /**
* 控件的初始化方法。
*/
private void DatePopupInit()
{
//设置主窗口布局
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
mPanel1.setLayout(new BorderLayout());
mPanel1.setBorder(new TitledBorder(BorderFactory.createLineBorder(Color.white,1),"日期选择")); Calendar nowCalendar = Calendar.getInstance();
this.mTheDate = nowCalendar.get(Calendar.DAY_OF_WEEK);
this.mDay = nowCalendar.get(Calendar.DAY_OF_MONTH);
this.mMonth = nowCalendar.get(Calendar.MONTH);
this.mYear = nowCalendar.get(Calendar.YEAR); //设置mPanel2
JComboBox comboMonth = new JComboBox();
comboMonth.setActionCommand("MonthSelect");
for(i=1;i<=12;i++)
{
comboMonth.addItem(i+"月");
if(i==(this.mMonth+1))
{
comboMonth.setSelectedItem(i+"月");
}
}
comboMonth.addActionListener(this);
JComboBox comboYear = new JComboBox();
comboYear.setActionCommand("YearSelect");
for(i=1900;i<=2050;i++)
{
comboYear.addItem(i+"年");
if(i==this.mYear)
{
comboYear.setSelectedItem(i+"年");
}
}
comboYear.addActionListener(this);
mPanel2.setLayout(new FlowLayout());
mPanel2.add(comboMonth);
mPanel2.add(comboYear);
mPanel1.add(mPanel2,BorderLayout.NORTH); //设置mPanel3
mPanel3.setLayout(new GridLayout(7,7));
mPanel3.add(new JLabel("日",SwingConstants.CENTER));
mPanel3.add(new JLabel("一",SwingConstants.CENTER));
mPanel3.add(new JLabel("二",SwingConstants.CENTER));
mPanel3.add(new JLabel("三",SwingConstants.CENTER));
mPanel3.add(new JLabel("四",SwingConstants.CENTER));
mPanel3.add(new JLabel("五",SwingConstants.CENTER));
mPanel3.add(new JLabel("六",SwingConstants.CENTER));
Calendar calendar1 = Calendar.getInstance();
calendar1.set(this.mYear,this.mMonth+1,1);
Calendar calendar2 = Calendar.getInstance();
calendar2.set(this.mYear,this.mMonth,1);
int daysOfMonth;
if(this.mMonth==11)
{
daysOfMonth = 31;
} else {
daysOfMonth = calendar1.get(Calendar.DAY_OF_YEAR) - calendar2.get(Calendar.DAY_OF_YEAR);
}
int firstDay = calendar2.get(Calendar.DAY_OF_WEEK);
for(i=1;i<43;i++)
{
if(((i==firstDay)||(j!=0))&&(j<daysOfMonth))
{
j++;
mNewButton = new JButton((new String()).valueOf(j));
if(j==this.mDay)
{
mNewButton.setSelected(true);
mNewButton.setEnabled(false);
mNewButton.setBackground(new Color(84,215,4));
}
mNewButton.addActionListener(this);
mPanel3.add(mNewButton);
} else {
mPanel3.add(new JLabel());
}
}
mPanel1.add(mPanel3,BorderLayout.CENTER); //设置mPanel4
JButton confirmButton = new JButton("确定");
confirmButton.setActionCommand("confirm");
confirmButton.addActionListener(this);
JButton cancelButton = new JButton("取消");
cancelButton.setActionCommand("cancel");
cancelButton.addActionListener(this);
mPanel4.setLayout(new FlowLayout());
mPanel4.add(confirmButton);
mPanel4.add(cancelButton); //设置contentpane
contentPane.add(mPanel1,BorderLayout.CENTER);
contentPane.add(mPanel4,BorderLayout.SOUTH);
} /**
* 监听事件响应。
*/
public void actionPerformed(ActionEvent e)
{
String cmd = e.getActionCommand();
Object obj = e.getSource();
String temp = "";
if(cmd.equals("MonthSelect"))
{
JComboBox comMonth = (JComboBox)obj;
temp = comMonth.getSelectedItem().toString();
temp = temp.substring(0,temp.length()-1);
int tempMonth = Integer.parseInt(temp);
this.mMonth = tempMonth-1;
mypaint();
} else if(cmd.equals("YearSelect")) {
JComboBox comYear = (JComboBox)obj;
temp = comYear.getSelectedItem().toString();
temp = temp.substring(0,4);
int tempYear = Integer.parseInt(temp);
this.mYear = tempYear;
mypaint();
} else if(cmd.equals("confirm")) {
String pFinalDate = "";
if(this.mMonth<9) {
pFinalDate = this.mYear + ":0" +(this.mMonth+1);
} else {
pFinalDate = this.mYear + ":" + (this.mMonth+1);
}
if(this.mDay<10) {
pFinalDate = pFinalDate + ":0"+ this.mDay;
} else {
pFinalDate = pFinalDate + ":"+ this.mDay;
}
this.mText.setText(pFinalDate);
this.dispose();
} else if(cmd.equals("cancel")) {
this.dispose();
} else {
int tempDay = Integer.parseInt(cmd);
this.mDay = tempDay;
mypaint();
//System.out.println(cmd);
}
} /**
* 控件重新布局方法。
*/
private void mypaint()
{
this.invalidate();
mPanel3.removeAll();
mPanel3.setLayout(new GridLayout(7,7));
mPanel3.add(new JLabel("日",SwingConstants.CENTER));
mPanel3.add(new JLabel("一",SwingConstants.CENTER));
mPanel3.add(new JLabel("二",SwingConstants.CENTER));
mPanel3.add(new JLabel("三",SwingConstants.CENTER));
mPanel3.add(new JLabel("四",SwingConstants.CENTER));
mPanel3.add(new JLabel("五",SwingConstants.CENTER));
mPanel3.add(new JLabel("六",SwingConstants.CENTER));
Calendar calendar1 = Calendar.getInstance();
calendar1.set(this.mYear,this.mMonth+1,1);
Calendar calendar2 = Calendar.getInstance();
calendar2.set(this.mYear,this.mMonth,1);
int daysOfMonth;
if(this.mMonth==11)
{
daysOfMonth = 31;
} else {
daysOfMonth = calendar1.get(Calendar.DAY_OF_YEAR) - calendar2.get(Calendar.DAY_OF_YEAR);
}
int firstDay = calendar2.get(Calendar.DAY_OF_WEEK);
j = 0;
for(i=1;i<43;i++)
{
if(((i==firstDay)||(j!=0))&&(j<daysOfMonth))
{
j++;
mNewButton = new JButton((new String()).valueOf(j));
if(j==this.mDay)
{
mNewButton.setSelected(true);
mNewButton.setEnabled(false);
mNewButton.setBackground(new Color(84,215,4));
}
mNewButton.addActionListener(this);
mPanel3.add(mNewButton);
} else {
mPanel3.add(new JLabel());
}
}
mPanel1.add(mPanel3,BorderLayout.CENTER);
this.validate();
}
}
JTextField temp=new JTextField();//日期选好后显示的TEXT控件
DatePopup pDialog = new DatePopup(temp);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = pDialog.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
pDialog.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
pDialog.setVisible(true);