📄 calendarpanel.java
字号:
} } dateSelectionModel.setLeadSelectionDate(navigation .getTime()); calendar.setTime(navigation.getTime()); refreshSelection(); repaint(); //monthpanel.repaint(); } fireKeyListenerKeyPressed(e); } public void keyReleased(KeyEvent e) { fireKeyListenerKeyReleased(e); } public void keyTyped(KeyEvent e) { fireKeyListenerKeyTyped(e); } }; /*monthlistener = new MonthChangeListener() { public void monthIncreased(MonthChangeEvent e) { setDate(e.getDate()); } public void monthDecreased(MonthChangeEvent e) { setDate(e.getDate()); } };*/ mlistener = new MouseAdapter() { public void mouseClicked(MouseEvent e) { DayPanel dp = (DayPanel) e.getSource(); if (!dp.isEnabled() || !dp.isComponentEnabled()) return; dateSelectionModel.setValueIsAdjusting(true); if (!e.isControlDown()) { dateSelectionModel.clearSelection(); if (e.isShiftDown()) { dateSelectionModel.addSelectionInterval( dateSelectionModel.getLeadSelectionDate(), dp .getDate()); } else dateSelectionModel.addSelectionInterval(dp.getDate(), dp.getDate()); } else { if (e.isShiftDown()) { dateSelectionModel.addSelectionInterval( dateSelectionModel.getLeadSelectionDate(), dp .getDate()); } else { if (dateSelectionModel.isSelectedDate(dp.getDate())) { dateSelectionModel.removeSelectionInterval(dp .getDate(), dp.getDate()); } else dateSelectionModel.addSelectionInterval(dp .getDate(), dp.getDate()); } } dateSelectionModel.setLeadSelectionDate(dp.getDate()); repaint(); dp.requestFocus(); calendar.setTime(dp.getDate()); /*fireActionListenerActionPerformed(new ActionEvent(this, 0, "clicked"));*/ dateSelectionModel.setValueIsAdjusting(false); refreshSelection(); repaint(); } }; // listener para la seleccion listlistener = new DateSelectionListener() { public void valueChanged(DateSelectionEvent e) { for (int i=0; i < months.length; i++) { DayPanel[] daypanels = months[i].getDaypanels(); for (int j=0; j < daypanels.length; j++) { if (dateSelectionModel.isSelectedDate(daypanels[j].getDate())) { daypanels[j].setSelected(true); } else daypanels[j].setSelected(false); } } repaint(); fireChangeListenerStateChanged(new ChangeEvent(CalendarPanel.this)); } }; } /** * Changes the orientation (horizontal or vertical). * @param orientation the new orientation */ public void setOrientation(int orientation) { if (orientation == this.orientation) { return; } int old = this.orientation; this.orientation = orientation; removeAll(); if (orientation == VERTICAL) { layoutVertical(); } else { layoutHorizontal(); } firePropertyChange("orientation", old, orientation); } /** Method used to layout vertical. */ private void layoutVertical() { scroll.setOrientation(Adjustable.VERTICAL); JPanel centro = new JPanel(new GridLayout(months.length, 1)); for (int i = 0; i < months.length; i++) { centro.add(months[i]); } add(centro, BorderLayout.CENTER); layoutScrollAndYear(); } /** Method used to layout horizontal. */ private void layoutHorizontal() { scroll.setOrientation(Adjustable.HORIZONTAL); JPanel centro = new JPanel(new GridLayout(1, months.length)); for (int i = 0; i < months.length; i++) { centro.add(months[i]); } add(centro, BorderLayout.CENTER); layoutScrollAndYear(); } /** * Registers ChangeListener to receive events. * @param listener The listener to register. */ public synchronized void addChangeListener(javax.swing.event.ChangeListener listener) { if (listener == null) return; if (changeListenerList == null) { changeListenerList = new java.util.ArrayList(); } changeListenerList.add(listener); } /** * Removes ChangeListener from the list of listeners. * @param listener The listener to remove. */ public synchronized void removeChangeListener(javax.swing.event.ChangeListener listener) { if (changeListenerList != null) { changeListenerList.remove(listener); } } /** * Notifies all registered listeners about the event. * * @param event The event to be fired */ private void fireChangeListenerStateChanged(javax.swing.event.ChangeEvent event) { java.util.ArrayList list; synchronized (this) { if (changeListenerList == null) { return; } list = (java.util.ArrayList) changeListenerList.clone(); } for (int i = 0; i < list.size(); i++) { ((javax.swing.event.ChangeListener) list.get(i)).stateChanged(event); } } /** * Event fired when the selected day changes. * @param e event fired */ public void stateChanged(ChangeEvent e) { fireChangeListenerStateChanged(e); } /** * Sets the month shown. * @param month month to show */ private void setShowingMonth(int month) { Calendar cal = new GregorianCalendar(showingyear, month, 1); for (int i = 0; i < months.length; i++) { //cal.setTime(months[i].getMonth()); //cal.add(Calendar.MONTH, cal.get(Calendar.MONTH) - month + i); months[i].setMonth(cal.getTime()); /*months[i].setSelectionOffset((month + i) * 42); months[i].setSelectionOffset(cal.get(Calendar.MONTH));*/ cal.add(Calendar.MONTH, 1); } minDate = months[0].getMinDate(); maxDate = months[months.length - 1].getMaxDate(); refreshSelection(); } /** * Sets the year shown. * @param year the year to show */ private void setShowingYear(int year) { showingyear = year; for (int i = 0; i < months.length; i++) { cal.setTime(months[i].getMonth()); cal.set(Calendar.YEAR, year); months[i].setMonth(cal.getTime()); } refreshSelection(); } /** * Getter for property date. * @return Value of property date. */ public Date getDate() { return date; } /** * Setter for property date. * @param date New value of property date. */ public void setDate(Date date) { if (date == null) return; this.date = date; cal.setTime(date); if (!isShowing(date)) { showMonth(date); } dateSelectionModel.setSelectedDate(date); refreshSelection(); repaint(); } /** * Getter for property workingdays. * @return Value of property workingdays. */ public boolean[] getWorkingdays() { return this.workingdays; } /** * Setter for property workingdays. * @param workingdays New value of property workingdays. */ public void setWorkingdays(boolean[] workingdays) { boolean[] old = this.workingdays; this.workingdays = workingdays; for (int i = 0; i < months.length; i++) { months[i].setWorkingdays(workingdays); } firePropertyChange("workingDays", old, workingdays); } /** * Getter for property renderer. * @return Value of property renderer. */ public DayRenderer getRenderer() { return months[0].getRenderer(); } /** * Setter for property renderer. * @param renderer New value of property renderer. */ public void setRenderer(DayRenderer renderer) { dayrenderer = renderer; for (int i = 0; i < months.length; i++) { months[i].setRenderer(renderer); } } /** * Getter for property model. * @return Value of property model. */ public DataModel getModel() { return months[0].getModel(); } /** * Setter for property model. * @param model New value of property model. */ public void setModel(DataModel model) { datamodel = model; for (int i = 0; i < months.length; i++) { months[i].setModel(model); } } /** * Getter for property firstDayOfWeek. * @return Value of property firstDayOfWeek. */ public int getFirstDayOfWeek() { return months[0].getFirstDayOfWeek(); } /** * Setter for property firstDayOfWeek. * @param firstDayOfWeek New value of property firstDayOfWeek. */ public void setFirstDayOfWeek(int firstDayOfWeek) { if ((firstDayOfWeek == Calendar.SUNDAY) || (firstDayOfWeek == Calendar.MONDAY)) { int old = months[0].getFirstDayOfWeek(); if (firstDayOfWeek == months[0].getFirstDayOfWeek()) return; for (int i = 0; i < months.length; i++) { months[i].setFirstDayOfWeek(firstDayOfWeek); } refreshSelection(); repaint(); firePropertyChange("firstDayOfWeek", old, firstDayOfWeek); } } /** Refreshes the display of this month. */ public void refresh() { for (int i = 0; i < months.length; i++) { months[i].refresh(); } } /** * Getter for property headerRenderer. * @return Value of property headerRenderer. */ public HeaderRenderer getHeaderRenderer() { return months[0].getHeaderRenderer(); } /** * Setter for property headerRenderer. * @param headerRenderer New value of property headerRenderer. */ public void setHeaderRenderer(HeaderRenderer headerRenderer) { headerrenderer = headerRenderer; for (int i = 0; i < months.length; i++) { months[i].setHeaderRenderer(headerRenderer); } } /** * Getter for property orientation. * @return Value of property orientation. */ public int getOrientation() { return orientation; } /** * Getter for property scrollPosition. * @return Value of property scrollPosition. */ public int getScrollPosition() { return scrollPosition; } /** * Setter for property scrollPosition. * @param scrollPosition New value of property scrollPosition. */ public void setScrollPosition(int scrollPosition) { if (scrollPosition == this.scrollPosition) { return; } int old = this.scrollPosition; this.scrollPosition = scrollPosition; if (orientation == HORIZONTAL) { remove(abajo); } else { remove(ys); remove(scroll); } layoutScrollAndYear(); firePropertyChange("scrollPosition", old, scrollPosition); } /** * Getter for property yearPosition. * @return Value of property yearPosition. */ public int getYearPosition() { return this.yearPosition; } /** * Setter for property yearPosition. * @param yearPosition New value of property yearPosition. */ public void setYearPosition(int yearPosition) { if (yearPosition == this.yearPosition) { return; } int old = this.yearPosition; this.yearPosition = yearPosition; if (orientation == HORIZONTAL) { remove(abajo); } else { remove(ys); remove(scroll); } layoutScrollAndYear();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -