Java日期和日历控件

Java日期和日历控件,java,swing,controls,components,javabeans,Java,Swing,Controls,Components,Javabeans,是否有人推荐在JavaSwing应用程序中使用好的日期选择器(下拉日历或小型日历组件)——bean或源代码?对于商业应用程序,它们需要足够健壮。是免费的,并提供bean和源代码。它是非常可配置的,在我的应用程序中,到目前为止,它很好地发挥了作用。试试看。有很多人不只是喜欢约会。。。享受。我同意Dan Dimerman的观点,可以推荐swingX图书馆。我们也在商业应用程序中使用JXDatePicker。使用JXMonthView您可以编写自己的日期选择器变体。您可以使用此版本,只需根据需要更改主

是否有人推荐在JavaSwing应用程序中使用好的日期选择器(下拉日历或小型日历组件)——bean或源代码?对于商业应用程序,它们需要足够健壮。

是免费的,并提供bean和源代码。它是非常可配置的,在我的应用程序中,到目前为止,它很好地发挥了作用。

试试看。有很多人不只是喜欢约会。。。享受。

我同意Dan Dimerman的观点,可以推荐swingX图书馆。我们也在商业应用程序中使用
JXDatePicker
。使用
JXMonthView
您可以编写自己的日期选择器变体。

您可以使用此版本,只需根据需要更改主版本即可^^

   import java.awt.BorderLayout;
   import java.awt.Color;
   import java.awt.Dimension;
   import java.awt.GridLayout;
   import java.awt.event.ActionEvent;
   import java.awt.event.ActionListener;

   import javax.swing.JButton;
   import javax.swing.JDialog;
   import javax.swing.JFrame;
   import javax.swing.JLabel;
   import javax.swing.JPanel;
   import javax.swing.JTextField;

   public class DatePicker {
 int month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
 int year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);;
 JLabel l = new JLabel("", JLabel.CENTER);
 String day = "";
 JDialog d;
 JButton[] button = new JButton[49];

 public DatePicker(JFrame parent) {
         d = new JDialog();
         d.setModal(true);
         String[] header = { "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" };
         JPanel p1 = new JPanel(new GridLayout(7, 7));
         p1.setPreferredSize(new Dimension(430, 120));

         for (int x = 0; x < button.length; x++) {
                 final int selection = x;
                 button[x] = new JButton();
                 button[x].setFocusPainted(false);
                 button[x].setBackground(Color.white);
                 if (x > 6)
                         button[x].addActionListener(new ActionListener() {
                                 public void actionPerformed(ActionEvent ae) {
                                         day = button[selection].getActionCommand();
                                         d.dispose();
                                 }
                         });
                 if (x < 7) {
                         button[x].setText(header[x]);
                         button[x].setForeground(Color.red);
                 }
                 p1.add(button[x]);
         }
         JPanel p2 = new JPanel(new GridLayout(1, 3));
         JButton previous = new JButton("<< Previous");
         previous.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent ae) {
                         month--;
                         displayDate();
                 }
         });
         p2.add(previous);
         p2.add(l);
         JButton next = new JButton("Next >>");
         next.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent ae) {
                         month++;
                         displayDate();
                 }
         });
         p2.add(next);
         d.add(p1, BorderLayout.CENTER);
         d.add(p2, BorderLayout.SOUTH);
         d.pack();
         d.setLocationRelativeTo(parent);
         displayDate();
         d.setVisible(true);
 }

 public void displayDate() {
         for (int x = 7; x < button.length; x++)
                 button[x].setText("");
         java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
                         "MMMM yyyy");
         java.util.Calendar cal = java.util.Calendar.getInstance();
         cal.set(year, month, 1);
         int dayOfWeek = cal.get(java.util.Calendar.DAY_OF_WEEK);
         int daysInMonth = cal.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);
         for (int x = 6 + dayOfWeek, day = 1; day <= daysInMonth; x++, day++)
                 button[x].setText("" + day);
         l.setText(sdf.format(cal.getTime()));
         d.setTitle("Date Picker");
 }

 public String setPickedDate() {
         if (day.equals(""))
                 return day;
         java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
                         "dd-MM-yyyy");
         java.util.Calendar cal = java.util.Calendar.getInstance();
         cal.set(year, month, Integer.parseInt(day));
         return sdf.format(cal.getTime());
 }
}

  class Picker {
 public static void main(String[] args) {
         JLabel label = new JLabel("Selected Date:");
         final JTextField text = new JTextField(20);
         JButton b = new JButton("popup");
         JPanel p = new JPanel();
         p.add(label);
         p.add(text);
         p.add(b);
         final JFrame f = new JFrame();
         f.getContentPane().add(p);
         f.pack();
         f.setVisible(true);
         b.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent ae) {
                         text.setText(new DatePicker(f).setPickedDate());
                 }
         });
 }

  }
导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JDialog;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
公共类日期选择器{
int month=java.util.Calendar.getInstance().get(java.util.Calendar.month);
int year=java.util.Calendar.getInstance().get(java.util.Calendar.year);;
JLabel l=新JLabel(“,JLabel.CENTER”);
字符串日期=”;
JDialog d;
JButton[]按钮=新JButton[49];
公共日期选择器(JFrame父级){
d=新JDialog();
d、 setModal(真);
字符串[]头={“Sun”、“Mon”、“Tue”、“Wed”、“Thur”、“Fri”、“Sat”};
JPanel p1=新JPanel(新网格布局(7,7));
p1.设置首选尺寸(新尺寸(430120));
用于(int x=0;x6)
按钮[x].addActionListener(新建ActionListener()){
已执行的公共无效行动(行动事件ae){
day=按钮[选择]。getActionCommand();
d、 处置();
}
});
if(x<7){
按钮[x].setText(标题[x]);
按钮[x]。设置前景(颜色为红色);
}
p1.添加(按钮[x]);
}
JPanel p2=新的JPanel(新的网格布局(1,3));
JButton previous=新JButton(“>”);
next.addActionListener(新ActionListener(){
已执行的公共无效行动(行动事件ae){
月份++;
显示日期();
}
});
p2.添加(下一步);
d、 添加(p1,BorderLayout.CENTER);
d、 添加(p2,南部边界布局);
d、 包装();
d、 setLocationRelativeTo(父级);
显示日期();
d、 setVisible(真);
}
公开作废显示日期(){
用于(int x=7;x