private Chooser(java.util.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(java.util.Date date, String format){ return new Chooser(date, format, defaultStartDAY); } public static Chooser getInstance(java.util.Date date){ return getInstance(date, DEFAULTFORMAT); } public static Chooser getInstance(String format){ return getInstance(new java.util.Date(), format); } public static Chooser getInstance(){ return getInstance(new java.util.Date(), DEFAULTFORMAT); } private void initCalendarPanel(){ calendarPanel = new JPanel(new java.awt.BorderLayout()); calendarPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0xAA, 0xAA, 0xAA))); calendarPanel.add(titlePanel = new TitlePanel(), java.awt.BorderLayout.NORTH); calendarPanel.add(bodyPanel = new BodyPanel(), java.awt.BorderLayout.CENTER); calendarPanel.add(footerPanel = new FooterPanel(),java.awt.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; } }逐行解释
时间: 2024-02-26 11:54:02 浏览: 122
这段代码是一个Java类中的部分实现。它定义了一个名为Chooser的类,该类实现了一个日期选择器的功能。下面对代码进行逐行解释:
1. private Chooser(java.util.Date date, String format, int startDAY){...}
这是一个私有构造函数,它接受三个参数:一个日期、一个日期格式和一个星期开始的日期。它会初始化一个日历,并根据传入的星期开始日期初始化一个星期标签数组。日期格式使用传入的格式。这个构造函数被getInstance()方法调用。
2. public static Chooser getInstance(java.util.Date date, String format){...}
这是一个公共静态方法,它返回一个日期选择器实例。它接受两个参数:日期和日期格式。
3. public static Chooser getInstance(java.util.Date date){...}
这是一个公共静态方法,它返回一个日期选择器实例。它接受一个日期参数,默认使用一个默认的日期格式。
4. public static Chooser getInstance(String format){...}
这是一个公共静态方法,它返回一个日期选择器实例。它接受一个日期格式参数,默认使用当前日期。
5. public static Chooser getInstance(){...}
这是一个公共静态方法,它返回一个日期选择器实例。它不接受任何参数,默认使用当前日期和一个默认日期格式。
6. private void initCalendarPanel(){...}
这是一个私有方法,它初始化一个日历面板。该面板包含标题面板、主体面板和页脚面板。它还添加了一个祖先监听器以处理移动组件时隐藏弹出窗口。
7. public void register(final JComponent showComponent) {...}
这是一个公共方法,它注册显示日期选择器的组件。该方法向传入的组件添加鼠标监听器和焦点监听器。
8. private void hidePanel() {...}
这是一个私有方法,它隐藏日期选择器面板。如果面板已经显示,则它将被隐藏,并将isShow标志设置为false。
阅读全文