📄 calendarpanel.java
字号:
firePropertyChange("yearPosition", old, yearPosition); } /** Utility method to layout the scrolls. */ private void layoutScrollAndYear() { if (orientation == VERTICAL) { if (yearPosition == UP) { add(ys, BorderLayout.NORTH); add(today, BorderLayout.SOUTH); } else { add(ys, BorderLayout.SOUTH); add(today, BorderLayout.NORTH); } if (scrollPosition == LEFT) { add(scroll, BorderLayout.WEST); } else { add(scroll, BorderLayout.EAST); } } else { abajo = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.weighty = 1; gbc.gridheight = 1; gbc.gridwidth = 1; gbc.fill = GridBagConstraints.BOTH; if (yearPosition == LEFT) { gbc.weightx = 0; abajo.add(ys, gbc); gbc.weightx = 1; abajo.add(scroll, gbc); gbc.weightx = 0; abajo.add(today, gbc); } else { gbc.weightx = 0; abajo.add(today, gbc); gbc.weightx = 1; abajo.add(scroll, gbc); gbc.weightx = 0; abajo.add(ys, gbc); } if (scrollPosition == UP) { add(abajo, BorderLayout.NORTH); } else { add(abajo, BorderLayout.SOUTH); } } } /** * Getter for property quantity. * @return Value of property quantity. */ public int getQuantity() { return months.length; } /** * Setter for property quantity. * @param quantity New value of property quantity. */ public void setQuantity(int quantity) { if (quantity < 1) { quantity = 1; } if (quantity > 12) { quantity = 12; } if ((months != null) && (months.length == quantity)) { return; } int old = this.quantity; months = new MonthPanel[quantity]; for (int i = 0; i < months.length; i++) { months[i] = new MonthPanel(showWeekNumber); months[i].showTitle(true); months[i].setModel(datamodel); months[i].setRenderer(dayrenderer); months[i].setHeaderRenderer(headerrenderer); months[i].setMinimalDaysInFirstWeek(minimalDaysInFirstWeek); months[i].setDay(new Date()); DayPanel[] daypanels = months[i].getDaypanels(); for (int j=0; j < daypanels.length; j++) { daypanels[j].addKeyListener(klistener); daypanels[j].addMouseListener(mlistener); } } int oldor = orientation; orientation = -1; setOrientation(oldor); this.quantity = quantity; scroll.setMaximum(12 + 5 - quantity); if (old != 0) firePropertyChange("quantity", old, quantity); } /** * Registers KeyListener to receive events. * @param listener The listener to register. */ public synchronized void addKeyListener(java.awt.event.KeyListener listener) { if (listenerList == null ) { listenerList = new javax.swing.event.EventListenerList(); } listenerList.add(java.awt.event.KeyListener.class, listener); } /** * Removes KeyListener from the list of listeners. * @param listener The listener to remove. */ public synchronized void removeKeyListener(java.awt.event.KeyListener listener) { listenerList.remove(java.awt.event.KeyListener.class, listener); } /** * Notifies all registered listeners about the event. * * @param event The event to be fired */ private void fireKeyListenerKeyTyped(java.awt.event.KeyEvent event) { if (listenerList == null) return; Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==java.awt.event.KeyListener.class) { ((java.awt.event.KeyListener)listeners[i+1]).keyTyped(event); } } } /** * Notifies all registered listeners about the event. * * @param event The event to be fired */ private void fireKeyListenerKeyPressed(java.awt.event.KeyEvent event) { if (listenerList == null) return; Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==java.awt.event.KeyListener.class) { ((java.awt.event.KeyListener)listeners[i+1]).keyPressed(event); } } } /** * Notifies all registered listeners about the event. * * @param event The event to be fired */ private void fireKeyListenerKeyReleased(java.awt.event.KeyEvent event) { if (listenerList == null) return; Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==java.awt.event.KeyListener.class) { ((java.awt.event.KeyListener)listeners[i+1]).keyReleased(event); } } } /** * Enables or disables the component * @param enabled true for enabling */ public void setEnabled(boolean enabled) { for (int i=0; i < months.length; i++) { months[i].setEnabled(enabled); } scroll.setEnabled(enabled); ys.setEnabled(enabled); repaint(); // this.enabled = enabled; super.setEnabled(enabled); } /** * Getter for enabled property * @return true if it's enabled */ public boolean isEnabled() { return scroll.isEnabled(); } /** * @return Returns the antiAliased. */ public boolean isAntiAliased() { return antiAliased; } /** * @param antiAliased The antiAliased to set. */ public void setAntiAliased(boolean antiAliased) { boolean old = this.antiAliased; this.antiAliased = antiAliased; for (int i=0; i < months.length; i++) { months[i].setAntiAliased(antiAliased); } firePropertyChange("antiAliased", old, antiAliased); } /** * @return Returns the selectionMode. */ public int getSelectionMode() { return dateSelectionModel.getSelectionMode(); } /** * @param selectionMode The selectionMode to set. */ public void setSelectionMode(int selectionMode) { int old = dateSelectionModel.getSelectionMode(); dateSelectionModel.setSelectionMode(selectionMode); refreshSelection(); firePropertyChange("selectionMode", old, selectionMode); } private void refreshSelection() { for (int i=0; i < months.length; i++) { DayPanel[] daypanels = months[i].getDaypanels(); for (int j=0; j < daypanels.length; j++) { if (!daypanels[j].isEnabled()) { daypanels[j].setSelected(false); continue; } daypanels[j].setSelected(dateSelectionModel.isSelectedDate(daypanels[j].getDate())); } } } private boolean isShowing(Date date) { //if (minDate == null) return false; if (date.before(minDate)) return false; //if (maxDate == null) return false; if (date.after(maxDate)) return false; return true; } private void showMonth(Date d) { Calendar cal = new GregorianCalendar(); cal.setTime(d); if (ys.getYear() != cal.get(Calendar.YEAR)) { ys.setYear(cal.get(Calendar.YEAR)); setShowingYear(ys.getYear()); } if (isShowing(d)) return; int month = cal.get(Calendar.MONTH); int middle = (quantity / 2); int show = 0; if (month < scroll.getValue()) { show = month; } else { show = month - quantity + 1; } if (show < 0) { show = 0; } if (show > (11 - quantity + middle)) { show = (11 - quantity + middle); } scroll.setValue(show); } /** Returns the selected date. * @return Selected Date */ public Object getValue() { return dateSelectionModel.getSelectedDate(); } /** Return the selected dates as an Array. * @return Selected Dates */ public Object[] getValues() { return dateSelectionModel.getSelectedDates(); } /** Sets the selected date. * @param date Date to select */ public void setValue(Object date) { try { setDate(CalendarUtils.convertToDate(date)); } catch (ParseException e) { e.printStackTrace(); } } /** Set the selected dates. * @param dates Array with the Dates */ public void setValues(Object[] dates) { dateSelectionModel.setSelectedDates(dates); refreshSelection(); repaint(); showMonth((Date) dateSelectionModel.getSelectedDates()[0]); } /** * @return Returns the dateSelectionModel. */ public DateSelectionModel getDateSelectionModel() { return dateSelectionModel; } /** * @param dateSelectionModel The dateSelectionModel to set. */ public void setDateSelectionModel(DateSelectionModel dateSelectionModel) { if (dateSelectionModel != null) { this.dateSelectionModel.removeDateSelectionListener(listlistener); this.dateSelectionModel = dateSelectionModel; dateSelectionModel.addDateSelectionListener(listlistener); } } /** * Specifies how many days should the first week of the year contain <br> * If not specified, i.e. 0, then no changes from the defaults are done * * @param number */ public void setMinimalDaysInFirstWeek(int number) { if (months[0].getMinimalDaysInFirstWeek() != number) { for (int i = 0; i < months.length; i++) { months[i].setMinimalDaysInFirstWeek (number); } refreshSelection(); repaint(); firePropertyChange("minimalDaysInFirstWeek", minimalDaysInFirstWeek, number); minimalDaysInFirstWeek = number; } } /** * @return how many weekdays does the first week of the year have */ public int getMinimalDaysInFirstWeek() { return months[0].getMinimalDaysInFirstWeek(); } /** * @return Returns the printMoon. */ public boolean isPrintMoon() { return printMoon; } /** * @param printMoon The printMoon to set. */ public void setPrintMoon(boolean printMoon) { if (this.printMoon != printMoon) { this.printMoon = printMoon; for (int i = 0; i < months.length; i++) { months[i].setPrintMoon(printMoon); } refreshSelection(); repaint(); firePropertyChange("printMoon", printMoon, !printMoon); } } public void setTodayCaption(String caption) { if (caption == null) { today.setText(CalendarUtils.getMessage("today")); } else { today.setText(caption); } } /** * @return Returns the eternalScroll. */ public boolean isEternalScroll() { return eternalScroll; } /** * @param eternalScroll The eternalScroll to set. */ public void setEternalScroll(boolean eternalScroll) { this.eternalScroll = eternalScroll; } /** * @return Returns the showToday. */ public boolean isShowToday() { return showToday; } /** * @param showToday The showToday to set. */ public void setShowToday(boolean showToday) { today.setVisible(showToday); repaint(); this.showToday = showToday; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -