精华内容
下载资源
问答
  • 日历控件 JAVA

    2013-11-29 11:10:33
    java 日历控件 经典实用 简洁 简单易用,日历插件,JS CSS 样式都用,方便
  • java 日历控件

    2015-11-07 20:37:30
    从网上找到的一个非常实用的java图形界面的日历控件 分享给大家
  • java日历控件

    2016-07-27 11:38:14
    在网上找了好长时间,这个控件是从一个坛子里找来的,谢谢代码的提供者,非常好用,如果不需要时间,在类的最后代码中,将时间参数去掉即可。在NETBEANS8测试通过。
  • NULL 博文链接:https://tntxia.iteye.com/blog/559434
  • NULL 博文链接:https://tntxia.iteye.com/blog/699654
  • JAVA日历控件datepicker的使用(案例)

    热门讨论 2012-06-15 23:56:00
    JAVAswing中的日历控件datepicker的使用 及其datepicker.jar包下载
  • java 日历控件 源码

    2012-01-02 17:21:48
    java swing写的日历控件 可以在swing界面中使用的小工具 可以设置透明度、是否带装饰等
  • java实现日期控件

    2018-07-09 14:09:54
    java实现日期控件,日期控件是每个项目里,必须应用的控件,在这里给大家上传一个好用的日期控件
  • Java 日历控件

    千次阅读 2018-03-07 10:33:23
    import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; imp...
    package com;
    
    
    import java.awt.BasicStroke;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Cursor;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.GridLayout;
    import java.awt.Point;
    import java.awt.Polygon;
    import java.awt.Stroke;
    import java.awt.Toolkit;
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.List;
    
    
    import javax.swing.BorderFactory;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.Popup;
    import javax.swing.PopupFactory;
    import javax.swing.SwingUtilities;
    import javax.swing.event.AncestorEvent;
    import javax.swing.event.AncestorListener;
    
    
    /**
     * @author Ares
     * @Describe(Date Chooser class)
     */
    public class Chooser extends JPanel {
    
    
    	private static final long serialVersionUID = -5384012731547358720L;
    
    
    	private Calendar calendar;
    	private Calendar now = Calendar.getInstance();
    	private JPanel calendarPanel;
    	private Font font = new Font("Times", Font.PLAIN, 12);
    	public static java.text.SimpleDateFormat sdf;
    	private final LabelManager lm = new LabelManager();
    	private Popup pop;
    	private TitlePanel titlePanel;
    	private BodyPanel bodyPanel;
    	private FooterPanel footerPanel;
    
    
    	private JComponent showDate;
    	private boolean isShow = false;
    	private static final String DEFAULTFORMAT = "yyyy-MM-dd";
    	private static final String[] showTEXT = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
    	private static WeekLabel[] weekLabels = new WeekLabel[7];
    	private static int defaultStartDAY = 0;// 0 is from Sun, 1 is from Mon, 2 is
    											// from Tue
    	private static Color hoverColor = Color.blue; // hover color
    
    
    	private static Boolean moth = false;
    
    
    	private Chooser(Date date, String format, int startDAY) {
    		if (startDAY > -1 && startDAY < 7)
    			defaultStartDAY = startDAY;
    		int dayIndex = defaultStartDAY;
    		for (int i = 0; i < 7; i++) {
    			if (dayIndex > 6)
    				dayIndex = 0;
    			weekLabels[i] = new WeekLabel(dayIndex, showTEXT[dayIndex]);
    			dayIndex++;
    		}
    		sdf = new java.text.SimpleDateFormat(format);
    		calendar = Calendar.getInstance();
    		calendar.setTime(date);
    		initCalendarPanel();
    	}
    
    
    	public static Chooser getInstance(Date date, String format) {
    		return new Chooser(date, format, defaultStartDAY);
    	}
    
    
    	public static Chooser getInstance(Date date) {
    		return getInstance(date, DEFAULTFORMAT);
    	}
    
    
    	public static Chooser getInstance(String format) {
    		return getInstance(new Date(), format);
    	}
    
    
    	public static Chooser getInstance() {
    		return getInstance(new Date(), DEFAULTFORMAT);
    	}
    
    
    	private void initCalendarPanel() {
    		calendarPanel = new JPanel(new BorderLayout());
    		calendarPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0xAA, 0xAA, 0xAA)));
    		calendarPanel.add(titlePanel = new TitlePanel(), BorderLayout.NORTH);
    		calendarPanel.add(bodyPanel = new BodyPanel(), BorderLayout.CENTER);
    		calendarPanel.add(footerPanel = new FooterPanel(), BorderLayout.SOUTH);
    		this.addAncestorListener(new AncestorListener() {
    			public void ancestorAdded(AncestorEvent event) {
    			}
    
    
    			public void ancestorRemoved(AncestorEvent event) {
    				hidePanel();
    			}
    
    
    			// hide pop when move component.
    			public void ancestorMoved(AncestorEvent event) {
    				hidePanel();
    			}
    		});
    	}
    
    
    	public void register(final JComponent showComponent) {
    		this.showDate = showComponent;
    		showComponent.setRequestFocusEnabled(true);
    		showComponent.addMouseListener(new MouseAdapter() {
    			public void mousePressed(MouseEvent me) {
    				showComponent.requestFocusInWindow();
    			}
    		});
    		// this.add(showComponent, BorderLayout.CENTER);
    		this.setPreferredSize(new Dimension(90, 25));
    		this.setBorder(BorderFactory.createLineBorder(Color.GRAY));
    		showComponent.addMouseListener(new MouseAdapter() {
    			public void mouseEntered(MouseEvent me) {
    				if (showComponent.isEnabled()) {
    					showComponent.setCursor(new Cursor(Cursor.HAND_CURSOR));
    				}
    			}
    
    
    			public void mouseExited(MouseEvent me) {
    				if (showComponent.isEnabled()) {
    					showComponent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    					showComponent.setForeground(Color.BLACK);
    				}
    			}
    
    
    			public void mousePressed(MouseEvent me) {
    				if (showComponent.isEnabled()) {
    					showComponent.setForeground(hoverColor);
    					if (isShow) {
    						hidePanel();
    					} else {
    						showPanel(showComponent);
    					}
    				}
    			}
    
    
    			public void mouseReleased(MouseEvent me) {
    				if (showComponent.isEnabled()) {
    					showComponent.setForeground(Color.BLACK);
    				}
    			}
    		});
    		showComponent.addFocusListener(new FocusListener() {
    			public void focusLost(FocusEvent e) {
    				hidePanel();
    			}
    
    
    			public void focusGained(FocusEvent e) {
    			}
    		});
    	}
    
    
    	// hide the main panel.
    	private void hidePanel() {
    		if (pop != null) {
    			isShow = false;
    			pop.hide();
    			pop = null;
    		}
    	}
    
    
    	// show the main panel.
    	private void showPanel(Component owner) {
    		if (pop != null)
    			pop.hide();
    		Point show = new Point(0, showDate.getHeight());
    		SwingUtilities.convertPointToScreen(show, showDate);
    		Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
    		int x = show.x;
    		int y = show.y;
    		if (x < 0)
    			x = 0;
    		if (x > size.width - 212)
    			x = size.width - 212;
    		if (y > size.height - 167)
    			y -= 165;
    		pop = PopupFactory.getSharedInstance().getPopup(owner, calendarPanel, x, y);
    		pop.show();
    		isShow = true;
    	}
    
    
    	// change text or label's content.
    	private void commit() {
    		if (showDate instanceof JTextField) {
    			((JTextField) showDate).setText(sdf.format(calendar.getTime()));
    		} else if (showDate instanceof JLabel) {
    			((JLabel) showDate).setText(sdf.format(calendar.getTime()));
    		}
    		hidePanel();
    	}
    
    
    	// control panel
    	private class TitlePanel extends JPanel {
    
    
    		private static final long serialVersionUID = -2865282186037420798L;
    		private JLabel preYear, preMonth, center, nextMonth, nextYear, centercontainer;
    
    
    		public TitlePanel() {
    			super(new BorderLayout());
    			this.setBackground(new Color(190, 200, 200));
    			initTitlePanel();
    		}
    
    
    		private void initTitlePanel() {
    			preYear = new JLabel("<<", JLabel.CENTER);
    			preMonth = new JLabel("<", JLabel.CENTER);
    			center = new JLabel("", JLabel.CENTER);
    			centercontainer = new JLabel("", JLabel.CENTER);
    			nextMonth = new JLabel(">", JLabel.CENTER);
    			nextYear = new JLabel(">>", JLabel.CENTER);
    
    
    			preYear.setToolTipText("Last Year");
    			preMonth.setToolTipText("Last Month");
    			nextMonth.setToolTipText("Next Month");
    			nextYear.setToolTipText("Next Year");
    
    
    			preYear.setBorder(BorderFactory.createEmptyBorder(2, 10, 0, 0));
    			preMonth.setBorder(BorderFactory.createEmptyBorder(2, 15, 0, 0));
    			nextMonth.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 15));
    			nextYear.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 10));
    
    
    			centercontainer.setLayout(new BorderLayout());
    			centercontainer.add(preMonth, BorderLayout.WEST);
    			centercontainer.add(center, BorderLayout.CENTER);
    			centercontainer.add(nextMonth, BorderLayout.EAST);
    
    
    			this.add(preYear, BorderLayout.WEST);
    			this.add(centercontainer, BorderLayout.CENTER);
    			this.add(nextYear, BorderLayout.EAST);
    			this.setPreferredSize(new Dimension(210, 25));
    
    
    			updateDate();
    
    
    			preYear.addMouseListener(new MyMouseAdapter(preYear, Calendar.YEAR, 0));// -1
    			// preMonth.addMouseListener(new MyMouseAdapter(preMonth,
    			// Calendar.MONTH, 0));//-1 上一年
    			// nextMonth.addMouseListener(new MyMouseAdapter(nextMonth,
    			// Calendar.MONTH, 1));//1 下一年
    			preMonth.addMouseListener(new MyMouseAdapter(preMonth, Calendar.DAY_OF_MONTH, -30));// -1
    																								// 上一年
    			nextMonth.addMouseListener(new MyMouseAdapter(nextMonth, Calendar.DAY_OF_MONTH, 30));// 1
    																									// 下一年
    			nextYear.addMouseListener(new MyMouseAdapter(nextYear, Calendar.YEAR, 0));// 1
    		}
    
    
    		private void updateDate() {
    			center.setText(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1));
    		}
    
    
    		// listener for control label.
    		class MyMouseAdapter extends MouseAdapter {
    
    
    			JLabel label;
    			private int type, value;
    
    
    			public MyMouseAdapter(final JLabel label, final int type, final int value) {
    				this.label = label;
    				this.type = type;
    				this.value = value;
    			}
    
    
    			public void mouseEntered(MouseEvent me) {
    				label.setCursor(new Cursor(Cursor.HAND_CURSOR));
    				label.setForeground(hoverColor);
    			}
    
    
    			public void mouseExited(MouseEvent me) {
    				label.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    				label.setForeground(Color.BLACK);
    			}
    
    
    			public void mousePressed(MouseEvent me) {
    				if (value == 30 && moth == false) {
    					System.out.println("下一个月");
    					calendar.add(type, value);
    					label.setForeground(Color.WHITE);
    					refresh();
    					moth = true;
    				}
    
    
    				if (value == -30 && moth == true) {
    					System.out.println("上一个月");
    					calendar.add(type, value);
    					label.setForeground(Color.WHITE);
    					refresh();
    					moth = false;
    				}
    			}
    
    
    			public void mouseReleased(MouseEvent me) {
    				label.setForeground(Color.BLACK);
    			}
    		}
    	}
    
    
    	// body panel, include week labels and day labels.
    	private class BodyPanel extends JPanel {
    
    
    		private static final long serialVersionUID = 5677718768457235447L;
    
    
    		public BodyPanel() {
    			super(new GridLayout(7, 7));
    			this.setPreferredSize(new Dimension(350, 140));
    			initMonthPanel();
    		}
    
    
    		private void initMonthPanel() {
    			updateDate();
    		}
    
    
    		public void updateDate() {
    			this.removeAll();
    			lm.clear();
    			Date temp = calendar.getTime();
    			Calendar cal = Calendar.getInstance();
    			cal.setTime(temp);
    			cal.set(Calendar.DAY_OF_MONTH, 1);
    
    
    			int index = cal.get(Calendar.DAY_OF_WEEK);
    			// 从当月1号前移,一直移动到面板显示的第一天的前一天;当-index +
    			// defaultStartDAY为正数时,为避免面板从当月1号之后开始显示,需要前移一周,确保当月显示完全
    			if (index > defaultStartDAY)
    				cal.add(Calendar.DAY_OF_MONTH, -index + defaultStartDAY);
    			else
    				cal.add(Calendar.DAY_OF_MONTH, -index + defaultStartDAY - 7);
    
    
    			// 控制当前时间之前的日期不展示,大于当前时间+30天的日期也不展示
    
    
    			for (WeekLabel weekLabel : weekLabels) {
    				this.add(weekLabel);
    			}
    			System.out.println("今天:" + calendar.get(Calendar.DATE));
    			System.out.println("今天:" + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
    			for (int i = 0; i < 42; i++) {// 这里控制一天为一个Label,移除今天之前的Label
    				cal.add(Calendar.DAY_OF_MONTH, 1);
    				lm.addLabel(new DayLabel(cal));
    
    
    				if (cal.after(now) || calendar.get(Calendar.DATE) == cal.get(Calendar.DAY_OF_MONTH)) {// 如果超过30天则
    																										// 判断为没有超过今天
    					System.out.println("day:" + cal.get(Calendar.DAY_OF_MONTH) + " 超过了今天");
    				} else {
    					System.out.println("day:" + cal.get(Calendar.DAY_OF_MONTH) + " 没有超过今天");
    					lm.list.get(i).setText("");
    
    
    				}
    
    
    			}
    			for (DayLabel my : lm.getLabels()) {
    				this.add(my);
    			}
    		}
    	}
    
    
    	private class FooterPanel extends JPanel {
    
    
    		private static final long serialVersionUID = 8135037333899746736L;
    		// private JButton dateLabel;
    		private JLabel dateLabel;
    
    
    		public FooterPanel() {
    			super(new BorderLayout());
    			initFooterPanel();
    		}
    
    
    		private void initFooterPanel() {
    			dateLabel = new JLabel("今天 : " + sdf.format(new Date()), JLabel.CENTER);
    
    
    			dateLabel.setBounds((this.getWidth() - dateLabel.getWidth()) / 2,
    					(this.getHeight() - dateLabel.getHeight()) / 2, dateLabel.getWidth(), dateLabel.getHeight());
    			dateLabel.addMouseListener(new MouseListener() {
    
    
    				public void mouseReleased(MouseEvent e) {
    				}
    
    
    				public void mousePressed(MouseEvent e) {
    					calendar.setTime(new Date());
    					refresh();
    					commit();
    				}
    
    
    				public void mouseExited(MouseEvent e) {
    					dateLabel.setForeground(Color.BLACK);
    				}
    
    
    				public void mouseEntered(MouseEvent e) {// 鼠标进入
    					dateLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));
    					dateLabel.setForeground(hoverColor);
    				}
    
    
    				public void mouseClicked(MouseEvent e) {
    				}
    			});
    			this.setPreferredSize(new Dimension(250, 30));
    			this.add(dateLabel);
    		}
    
    
    		public void updateDate() {
    		};
    	}
    
    
    	// refresh all panel
    	private void refresh() {
    		titlePanel.updateDate();
    		bodyPanel.updateDate();
    		footerPanel.updateDate();
    		SwingUtilities.updateComponentTreeUI(this);
    	}
    
    
    	private class WeekLabel extends JLabel {
    
    
    		private static final long serialVersionUID = -8053965084432740110L;
    		private String name;
    
    
    		public WeekLabel(int index, String name) {
    			super(name, JLabel.CENTER);
    			this.name = name;
    		}
    
    
    		public String toString() {
    			return name;
    		}
    	}
    
    
    	private class DayLabel extends JLabel implements Comparator<DayLabel>, MouseListener, MouseMotionListener {
    
    
    		private static final long serialVersionUID = -6002103678554799020L;
    		private boolean isSelected;
    		private int year, month, day;
    
    
    		public DayLabel(Calendar cal) {
    			super("" + cal.get(Calendar.DAY_OF_MONTH), JLabel.CENTER);
    			this.year = cal.get(Calendar.YEAR);
    			this.month = cal.get(Calendar.MONTH);
    			this.day = cal.get(Calendar.DAY_OF_MONTH);
    
    
    			this.setFont(font);
    			this.addMouseListener(this);
    			this.addMouseMotionListener(this);
    			if (month == calendar.get(Calendar.MONTH))
    				this.setForeground(Color.BLACK);// BLACK
    			else
    				this.setForeground(Color.LIGHT_GRAY);// LIGHT_GRAY
    
    
    		}
    
    
    		public boolean getIsSelected() {
    			return isSelected;
    		}
    
    
    		public void setSelected(boolean b, boolean isDrag) {
    			isSelected = b;
    			if (b && !isDrag) {
    				int temp = calendar.get(Calendar.MONTH);
    				calendar.set(year, month, day);
    				if (temp == month) {
    					SwingUtilities.updateComponentTreeUI(bodyPanel);
    				} else {
    					refresh();
    				}
    				this.repaint();
    			}
    		}
    
    
    		protected void paintComponent(Graphics g) {
    			// 如果当前日期是选择日期,则高亮显示
    			if (day == calendar.get(Calendar.DAY_OF_MONTH) && month == calendar.get(Calendar.MONTH)) {
    				g.setColor(new Color(0xBB, 0xBF, 0xDA));
    				g.fillRect(0, 0, getWidth(), getHeight());
    			}
    			// 如果日期和当前日期一样,则用红框
    			if (year == now.get(Calendar.YEAR) && month == now.get(Calendar.MONTH)
    					&& day == now.get(Calendar.DAY_OF_MONTH)) {
    				Graphics2D gd = (Graphics2D) g;
    				gd.setColor(new Color(0x55, 0x55, 0x88));
    				Polygon p = new Polygon();
    				p.addPoint(0, 0);
    				p.addPoint(getWidth() - 1, 0);
    				p.addPoint(getWidth() - 1, getHeight() - 1);
    				p.addPoint(0, getHeight() - 1);
    				gd.drawPolygon(p);
    			}
    			if (isSelected) {// 如果被选中了就画出一个虚线框出来
    				Stroke s = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL, 1.0f,
    						new float[] { 2.0f, 2.0f }, 1.0f);
    				Graphics2D gd = (Graphics2D) g;
    				gd.setStroke(s);
    				gd.setColor(Color.BLACK);
    				Polygon p = new Polygon();
    				p.addPoint(0, 0);
    				p.addPoint(getWidth() - 1, 0);
    				p.addPoint(getWidth() - 1, getHeight() - 1);
    				p.addPoint(0, getHeight() - 1);
    				gd.drawPolygon(p);
    			}
    			super.paintComponent(g);
    		}
    
    
    		public boolean contains(Point p) {
    			return this.getBounds().contains(p);
    		}
    
    
    		private void update() {
    			repaint();
    		}
    
    
    		public void mouseDragged(MouseEvent e) {
    		}
    
    
    		public void mouseMoved(MouseEvent e) {
    		}
    
    
    		public void mouseClicked(MouseEvent e) {
    		}
    
    
    		public void mousePressed(MouseEvent e) {
    			isSelected = true;
    			update();
    		}
    
    
    		public void mouseReleased(MouseEvent e) {
    			Point p = SwingUtilities.convertPoint(this, e.getPoint(), bodyPanel);
    			this.setForeground(Color.BLACK);
    			lm.setSelect(p, false);
    			commit();
    		}
    
    
    		// change color when mouse over.
    		public void mouseEntered(MouseEvent e) {
    			this.setForeground(hoverColor);
    			this.repaint();
    		}
    
    
    		// change color when mouse exit.
    		public void mouseExited(MouseEvent e) {
    			if (month == calendar.get(Calendar.MONTH))
    				this.setForeground(Color.BLACK);
    			else
    				this.setForeground(Color.LIGHT_GRAY);
    			this.repaint();
    		}
    
    
    		public int compare(DayLabel o1, DayLabel o2) {
    			Calendar c1 = Calendar.getInstance();
    			c1.set(o1.year, o1.month, o1.day);
    			Calendar c2 = Calendar.getInstance();
    			c2.set(o2.year, o2.month, o2.day);
    			return c1.compareTo(c2);
    		}
    
    
    	}
    
    
    	private class LabelManager {
    		private List<DayLabel> list;
    
    
    		public LabelManager() {
    			list = new ArrayList<Chooser.DayLabel>();
    		}
    
    
    		public List<DayLabel> getLabels() {
    			return list;
    		}
    
    
    		public void addLabel(DayLabel label) {
    			list.add(label);
    		}
    
    
    		public void clear() {
    			list.clear();
    		}
    
    
    		public void setSelect(Point p, boolean b) {
    			// 如果是拖动,则要优化一下,以提高效率
    			if (b) {
    				// 表示是否能返回,不用比较完所有的标签,能返回的标志就是把上一个标签和
    				// 将要显示的标签找到了就可以了
    				boolean findPrevious = false, findNext = false;
    				for (DayLabel lab : list) {
    					if (lab.contains(p)) {
    						findNext = true;
    						if (lab.getIsSelected())
    							findPrevious = true;
    						else
    							lab.setSelected(true, b);
    					} else if (lab.getIsSelected()) {
    						findPrevious = true;
    						lab.setSelected(false, b);
    					}
    					if (findPrevious && findNext)
    						return;
    				}
    			} else {
    				DayLabel temp = null;
    				for (DayLabel m : list) {
    					if (m.contains(p)) {
    						temp = m;
    					} else if (m.getIsSelected()) {
    						m.setSelected(false, b);
    					}
    				}
    				if (temp != null)
    					temp.setSelected(true, b);
    			}
    		}
    	}
    
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		JFrame jf = new JFrame("Date Picker Test");
    		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		jf.setLayout(null);
    		jf.setBounds(400, 200, 300, 300);
    
    
    		Chooser ser = Chooser.getInstance();
    		javax.swing.JTextField text = new JTextField();
    		text.setBounds(10, 10, 200, 30);
    
    
    		text.setText(sdf.format(new Date()));
    		ser.register(text);
    
    
    		Chooser ser2 = Chooser.getInstance("yyyy年MM月dd日");
    		JLabel label = new JLabel("please click me.");
    		label.setBounds(10, 50, 200, 30);
    		ser2.register(label);
    
    
    		jf.add(text);
    		jf.add(label);
    		jf.setVisible(true);
    	}
    }

    展开全文
  • java日期日历控件

    2010-03-08 17:52:36
    java日期日历控件. java日期日历控件. java日期日历控件.
  • Java日历控件,精美之极

    热门讨论 2009-03-08 12:31:20
    Java swing日历控件,界面精美,使用方便,能用于个人作品 首先,声明一点,这个控件是我从一套据说价值九百多美元的swing类包中提取出来, 并加以修改的,所以: 一, 你不能把该控件用于任何商业产品中。 二,...
  • 一个日历控件的jar包,非常美观漂亮,可用于选择日期
  • 弹出的Android日历控件

    2021-03-16 20:19:56
    摘要:Java源码,Android源码,日历控件 一款漂亮的适用于Android平台的弹出日历控件,相当漂亮的风格,弹出日期时间选择器。Java代码里的注释挺丰富,肯定对新手学习Android应用开发有帮助,所以发上来供学习。部分...
  • 日历控件

    2019-03-23 01:18:26
    NULL 博文链接:https://java-travler.iteye.com/blog/1058056
  • jsp java 日历控件

    2009-11-16 17:35:10
    jsp java 日历控件,jsp java 日历控件,jsp java 日历控件
  • java源码:日历控件 Click Calendar.rar
  • java中的日期控件js

    2019-02-27 20:25:12
    jQuery日期选择插件Datepicker是我个人非常喜欢和常用的一款日历插件,使用非常方便,界面美观!支持单日期,双日期选择
  • JAVA Excel日历控件

    2012-03-07 11:13:26
    JAVA 的Excel日历控件,非常好用!
  • 这篇介绍webdriver如何处理日历控件,有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据。网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期。这篇,...

           这篇介绍webdriver如何处理日历控件,有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据。网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期。这篇,就是介绍用selenium如何自动化脚本实现。

    1.先看一个完全模仿手工操作的场景,点击输入框,点击下一个月,选择17日。当前是2017=07-01,假如我们要设置成2017-08-17.

    package lessons;
    
    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class HandleDate {
    	public static void main(String[] args) throws Exception {  
            
            System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
               
            WebDriver driver = new ChromeDriver();  
         
            driver.manage().window().maximize();  
           
            driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
              
            driver.get("http://jqueryui.com/resources/demos/datepicker/default.html");  
           
            Thread.sleep(2000);
            
            // 日期输入框
            WebElement date_inputbox = driver.findElement(By.id("datepicker"));
            
            //鼠标点击日期输入框
            date_inputbox.click();
            // 点击下一个月
            driver.findElement(By.xpath("//*[@id='ui-datepicker-div']/div/a[@data-handler='next']")).click();
            // 点击17日,xpath定义第三行第五个元素,可能每个月排序不一样,所以不一定点击的就是17日
            driver.findElement(By.xpath("//*[@id='ui-datepicker-div']/table/tbody/tr[3]/td[5]/a")).click();
          
          }
    }
           运行发现,确实可以实现选择时间,但是这样是不是太麻烦和啰嗦,上面的定义了第三行第五列,但是不同月份,这个值肯定不相同。有没有更好的方法呢?当然有,如果遇到这样的日期控件,直接把当做正常的文本输入框,然后调用sendKeys()方法,直接传一个带格式的日期数据进入就可以。

    package lessons;
    
    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class ElementOpration {
    	public static void main(String[] args) throws Exception {  
            
            System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
               
            WebDriver driver = new ChromeDriver();  
         
            driver.manage().window().maximize();  
           
            driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
              
            driver.get("http://jqueryui.com/resources/demos/datepicker/default.html");  
           
            Thread.sleep(2000);
            
            // 日期输入框
            WebElement date_inputbox = driver.findElement(By.id("datepicker"));
            date_inputbox.sendKeys("08/17/2017");
            
          
          }
    }


    展开全文
  • JAVA日历(带日程安排),直接新建项目,将源码导入就可以使用。
  • Java swing日历控件

    2013-01-10 05:32:32
    Java swing日历控件,不用找了,拿去吧
  • selenium操作日历控件java版本)

    千次阅读 2015-12-22 15:17:05
    问题:  在应用selenium实现web自动化时,经常会遇到处理日历控件点击问题,手工... selenium模拟JavaScript执行,将日历控件中输入框的readOnly属性改为false,然后使用selenium底层方法sendkeys实现输入框输入日期

    问题:

           在应用selenium实现web自动化时,经常会遇到处理日历控件点击问题,手工去一个个点击日历控件选择需要的日期,但自动化执行过程中,无法完全复制手工这样的操作。

    思路:

            selenium模拟JavaScript执行,将日历控件中输入框的r e a d Only属性改为false,然后使用selenium底层方法s e n d keys实现输入框输入日期

    图片:


    代码:

    //设置投放开始时间
    driver.findElement(By.id("date03")).click();
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.getElementById('date03').readOnly=false;");
    driver.findElement(By.id("date03")).clear();
    driver.findElement(By.id("date03")).sendKeys(mStartDateTime);





    展开全文
  • java日历控件开源 对于我们许多人来说,我们的日历是我们的命脉。 尽管有些人可以不用挂历或纸制日程安排者来安排他们的日程安排,但我们中的很多人已经将管理时间分配的过程转移到了数字日历上。 大多数主要的...

    java日历控件开源

    对于我们许多人来说,我们的日历是我们的命脉。 尽管有些人可以不用挂历或纸制日程安排者来安排他们的日程安排,但我们中的很多人已经将管理时间分配的过程转移到了数字日历上。

    大多数主要的供应商生态系统都提供了某种日历解决方案,可以跨设备同步。 其中,Google日历也许是最流行的。 对于许多人来说,它只是有效,因此可以轻松跟踪他们在多个计算机和移动设备上的日程安排,并与需要与之协调的其他人共享适当的信息。

    但是,与其他众多工具一样,您不必使用专有的托管解决方案即可满足日历需求。 可能只有一个适合您的开源项目。 但是,在深入探讨之前,让我们看一下日历实际上是什么。

    Internet日历和计划

    如果您使用的是Google日历之类的工具,则实际上是在使用两个单独的工具:用户界面(网站或移动应用)和日历服务器。 日历服务器会生成事件,接受邀请并在您计划的事情即将发生时向您发送提醒。

    iCalendar格式的事件(与Apple的iCal应用程序无关)是一个简单的文本文件。 这是一种非常简单的格式。 这是一个基本事件的示例:

    
       
    BEGIN:VCALENDAR
    PRODID:Seth
    VERSION:2.0
    CALSCALE:GREGORIAN
    BEGIN:VEVENT
    CREATED:20200511T114136
    DTSTAMP:20200511T114136
    LAST-MODIFIED:20200511T114136
    UID:VE3HK1CEFCK7O7HUSNUM8X
    SUMMARY:Example event
    CLASS:PUBLIC
    STATUS:CONFIRMED
    DESCRIPTION:This is an example ICS file.
    DTSTART:20200520T200000Z
    DTEND:20200520T203000Z
    END:VEVENT
    END:VCALENDAR

    如果您将文本复制并粘贴到以.ics结尾的文件中,则可以将其导入日历中,该日历将显示在您的日程安排中。 一个好的日历应用程序可以自动执行该过程,因此您很少知道它正在发生,但这实际上就是共享日历的全部魔力。

    在电子邮件中收到邀请您参加活动或会议的.ics文件并不少见。 如果您的电子邮件客户端没有自动为您管理此格式,则可以下载并将其导入您选择的日历应用程序中。 您甚至可以通过运行CalDAV服务器让其他人查看和编辑约会,该服务器是WebDAV的扩展,WebDAV是一种用于通过HTTP进行远程文件编辑的协议。

    了解了任务的划分方式后,您必须确定哪些功能对您至关重要。 如果您只是在寻找一种与他人共享日历事件的快速简便的方法,那么您真正需要的就是兼容iCalendar的日历应用程序。 如果要允许其他人查看和编辑日历,则还需要CalDAV服务。

    Nextcloud(桌面,Web)

    Nextcloud是您远离家乡的家,或者至少是远离办公桌的工作区。 它是您自己的个人云存储,文本编辑器,照片库,文件共享,日历应用程序等等。 由于Nextcloud包含CalDAV组件,因此您可以创建,导出,导入和订阅iCalendar事件和提要。 Nextcloud的日历提供了您希望从数字日历中获得的所有常用选项:颜色编码,私人和公共事件,导入和导出.ics文件,重复事件,位置标签,说明等。

    您无需使用Google日历即可接收和接受朋友和同事的邀请,也无需与他人共享自己的日历。 更好的是,您甚至不必在所有设备上使用Nextcloud。 您可以在台式机上使用Nextcloud,在手机上使用内置日历,并在笔记本电脑上完全使用其他功能。 由于开放的规范,它们都是兼容的。

    您可以在自己的服务器或托管帐户上安装Nextcloud,也可以加入现有的Nextcloud提供程序的服务器,或为自己的私有实例付费。

    雷鸟(桌面)

    Thunderbird and Lightning

    Firefox的创建者还维护着Thunderbird电子邮件客户端,这是一个用于Linux,Windows和Mac的桌面应用程序,用于在Web浏览器之外阅读电子邮件。 与Firefox一样,您可以使用插件自定义Thunderbird,其中最受欢迎的插件之一是日历组件Lightning 。 使用Lightning,您可以创建事件,甚至可以将事件发布到CalDAV服务(如Nextcloud)。 它还支持对您的不同日历供稿进行颜色编码,具有多种视图,甚至还具有一个侧面面板,供您在浏览电子邮件时快速参考。

    除插件架构外,Thunderbird的优势在于它是跨平台的。 如果您全天使用不同的操作系统,则可以通过在所有操作系统上使用Thunderbird来提高自己的UI稳定性。 您无法使Windows或macOS更改其操作方式,但至少可以确保无论您使用的是哪种计算机,至少您的电子邮件和日历都将完全相同。

    进化与Kontact(桌面)

    Evolution

    opensource.com

    如果您在任何现代Linux发行版上都使用了桌面电子邮件客户端,那么您可能会遇到GNOME的Evolution 。 除了巧妙地处理大量电子邮件外,Evolution还具有日历组件。 日历为iCalendar-coant,因此您可以导入和导出iCalendar事件,还可以订阅CalDAV提要。 因为它使用的是iCalendar规范,所以它具有熟悉的选项,例如重复事件,描述,位置等。

    Evolution日历提供了几种查看计划事件的方法。 可以使用通常的周和月视图,但是您还可以查看“工作周”(省略周末,这仅适用于一部分工人),日期和仅一个没有空白空间的任务列表。 它还在其电子邮件窗格中提供了当天的任务列表,因此您不必单击日历即可查看以后发生的事情。

    对于KDE用户, Kontact包含Korganizer,这是与Evolution中类似的日历组件。

    Etar(移动版)

    Etar

    原始的Android日历本身实际上是开源的,因此您可能已经在移动设备上使用了开源客户端。 但是,并非所有设备都附带该日历,因此您可以从F-Droid存储库下载类似的日历,或在GitHub上查看源代码 。 它使用与Android相同的视觉样式,因此其外观和感觉与其他移动OS完全集成。 它具有月,周,日的视图,仅包含您的每日议程。 它符合iCalendar,因此您可以共享日历,导入和导出.ics文件以及订阅CalDAV提要。

    AgenDAV(网络)

    AgenDAV

    在现代世界中,我们中的许多人都依赖于能够从任何地方访问我们的日历,而不管我们碰巧拥有什么设备,而且几乎没有什么可以替代可靠的网络日历。 尽管有许多Web工具可以从CalDAV提取数据,但我最喜欢的是AgenDAV ,它的外观与Google Calendar相似。 与Nextcloud不同,这里没有您可以加入的AgenDAV主机。 如果要运行AgenDAV服务器,则必须自己托管和安装它。 但是,与Nextcloud不同的是,AgenDAV 只是一个日历,因此,您可能不会打算使用一堆Web应用程序而不会增加复杂性或膨胀。

    AgenDAV与CalDAV会谈,而且讲得很流利。 它具有您需要与其他CalDAV日历进行交互的所有CalDAV功能,以及我们大多数人希望从日历Web应用程序获得的其他功能(例如颜色编码)。


    这些不是您可能考虑使用开放源代码保存日历的唯一工具。 还有许多其他人提供自己的功能选择。 您使用哪些开源工具来保存日历? 您是否使用org-mode和Git共同破解了一个解决方案? 还是您做了更具创造性的工作? 在下面的评论中让我们知道!


    编者注:本文最初发表于2016年,并已更新为新信息。

    翻译自: https://opensource.com/alternatives/google-calendar

    java日历控件开源

    展开全文
  • Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择 Java语言开发的简洁实用的日期选择控件,源码文件功能说明: [DateChooser.java] Java 日期选择控件(主体类) [public] ...
  • Java日历控件

    2012-05-15 23:52:48
    首先,声明一点,这个控件是我从一套据说价值九百多美元的swing类包中提取出来, 并加以修改的,所以: 一,你不能把该控件用于任何...(DatePicker.java除外,这个是我加进去的) 三,该控件可以用于你的个人作品中。
  • 超强java写的日历控件

    2009-10-07 10:54:37
    java编写的日历控件,因为swing不提供日历控件,所以在 swing开发中很不方便,现在提供纯java日历控件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,327
精华内容 3,730
关键字:

日历控件java

java 订阅