请问swing中有没有选日期的组件?

解决方案 »

  1.   

    给你一个Swing hacks里面的例子:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class MoveMouseListener implements MouseListener, MouseMotionListener {
        JComponent target;
        Point start_drag;
        Point start_loc;    public MoveMouseListener(JComponent target) {
            this.target = target;
        }    public static JFrame getFrame(Container target) {
            if(target instanceof JFrame) {
                return (JFrame)target;
            }
            return getFrame(target.getParent());
        }    Point getScreenLocation(MouseEvent e) {
            Point cursor = e.getPoint();
            Point target_location = this.target.getLocationOnScreen();
            return new Point(
                (int)(target_location.getX()+cursor.getX()),
                (int)(target_location.getY()+cursor.getY()));
        }
        public void mouseClicked(MouseEvent e) {}
        public void mouseEntered(MouseEvent e) {}
        public void mouseExited(MouseEvent e) {}
        public void mousePressed(MouseEvent e) {
            this.start_drag = this.getScreenLocation(e);
            this.start_loc = this.getFrame(this.target).getLocation();
        }    public void mouseReleased(MouseEvent e) {}    public void mouseDragged(MouseEvent e) {
            Point current = this.getScreenLocation(e);
            Point offset = new Point(
                (int)current.getX()-(int)start_drag.getX(),
                (int)current.getY()-(int)start_drag.getY());
            JFrame frame = this.getFrame(target);
            Point new_location = new Point(
                (int)(this.start_loc.getX()+offset.getX()),
                (int)(this.start_loc.getY()+offset.getY()));
            frame.setLocation(new_location);
        }
        public void mouseMoved(MouseEvent e) {}
    }
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    import java.util.*;
    import java.text.SimpleDateFormat;
    import java.awt.event.*;public class CalendarHack extends JPanel {
        protected Image background, highlight, day_img;
        protected SimpleDateFormat month = new SimpleDateFormat("MMMM");
        protected SimpleDateFormat year = new SimpleDateFormat("yyyy");
        protected SimpleDateFormat day = new SimpleDateFormat("d");
        protected Date date = new Date();
        
        public void setDate(Date date) {
            this.date = date;
        }
        public CalendarHack() {
            background = new ImageIcon("calendar.png").getImage();
            highlight = new ImageIcon("highlight.png").getImage();
            day_img = new ImageIcon("day.png").getImage();
            this.setPreferredSize(new Dimension(300,280));
        }
        
        public void paintComponent(Graphics g) {
            ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
            g.drawImage(background,0,0,null);
            g.setColor(Color.black);
            g.setFont(new Font("SansSerif",Font.PLAIN,18));
            g.drawString(month.format(date),34,36);
            g.setColor(Color.white);
            g.drawString(year.format(date),235,36);
            
            Calendar today = Calendar.getInstance();
            today.setTime(date);
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(Calendar.DATE,1);
            cal.add(Calendar.DATE,-cal.get(Calendar.DAY_OF_WEEK)+1);
            for(int week = 0; week < 6; week++) {
                for(int d = 0; d < 7; d++) {
                    Image img = day_img;
                    Color col = Color.black;
                    // only draw if it's actually in this month
                    if(cal.get(Calendar.MONTH) == today.get(Calendar.MONTH)) {
                        if(cal.equals(today)) { img = highlight; col = Color.white; }
                        g.drawImage(img,d*30+46,week*29+81,null);
                        g.drawString(day.format(cal.getTime()),d*30+46+4,week*29+81+20);
                    }
                    cal.add(Calendar.DATE,+1);
                }
            }
        }    public static void main(String[] args) {
            JFrame frame = new JFrame();
            CalendarHack ch = new CalendarHack();
            ch.setDate(new Date());
            frame.getContentPane().add(ch);
            frame.setUndecorated(true);
            
            MoveMouseListener mml = new MoveMouseListener(ch);
            ch.addMouseListener(mml);
            ch.addMouseMotionListener(mml);        
            frame.pack();
            frame.setVisible(true);
        }
    }
      

  3.   

    在网上下载过一个openswing,里面的东西比较全
    比较好用,可以在网上下载一个
      

  4.   

    SpinnerDateModel model2 = new SpinnerDateModel();
        model2.setCalendarField(Calendar.WEEK_OF_MONTH);
        JSpinner spinner2 = new JSpinner(model2);
        JSpinner.DateEditor editor2 = new JSpinner.DateEditor(
          spinner2, "MMMMM dd, yyyy");
        spinner2.setEditor(editor2);DateFormat format = 
          new SimpleDateFormat("yyyy--MMMM--dd");
        DateFormatter df = new DateFormatter(format);
        JFormattedTextField ftf1 = new 
          JFormattedTextField(df);
        ftf1.setValue(new Date());