2009-01-22 62 views
12

Có ai có bất kỳ đề xuất nào về bộ chọn ngày tốt (thả xuống lịch hoặc các thành phần lịch nhỏ) để sử dụng trong ứng dụng Java Swing - hoặc là đậu hoặc mã nguồn không? Họ cần phải đủ mạnh mẽ cho các ứng dụng thương mại.Điều khiển ngày tháng và lịch Java

Trả lời

8

JCalendar miễn phí và cung cấp đậu và mã nguồn. Nó là khá cấu hình và trong các ứng dụng của tôi cho đến nay phục vụ mục đích của nó khá tốt.

7

Hãy thử swinglabs. Có rất nhiều hơn datepickers ... thưởng thức.

1

Tôi đồng ý với Dan Dimerman và có thể giới thiệu thư viện swingX. Chúng tôi cũng sử dụng JXDatePicker trong một ứng dụng thương mại. Và với JXMonthView bạn có khả năng viết biến thể của riêng bạn của bộ chọn ngày.

1

bạn có thể sử dụng một trong này chỉ cần thay đổi chính trên nhu cầu của bạn ^^

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()); 
       } 
     }); 
} 

    } 
Các vấn đề liên quan