package can.lyj.com; import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Calendar; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; @SuppressWarnings("serial") public class MyDate extends JPanel implements MouseListener { int years, months; String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; int[][] date = null; int day = 0; JLabel addy, jiany, addm, jianmon; String ymd; JFrame jf; JComponent com; JLabel today; public MyDate(JFrame jf, JComponent com) { this.jf = jf; this.com = com; setSize(380, 180); setLayout(null); JButton add = new JButton("+"); add.setSize(20, 20); years = Calendar.getInstance().get(Calendar.YEAR);// months = Calendar.getInstance().get(Calendar.MONTH) + 1;// date = Mycalander.getDateAry(years, months); day = Calendar.getInstance().get(Calendar.DATE);// addm = new JLabel(">"); jianmon = new JLabel("<"); addy = new JLabel(">>"); jiany = new JLabel("<<"); today = new JLabel("今天"); today.setBounds(280, 5, 50, 20); add(today); jiany.setBounds(50, 5, 30, 20); jianmon.setBounds(80, 5, 30, 20); addy.setBounds(250, 5, 30, 20); addm.setBounds(230, 5, 30, 20); jianmon.addMouseListener(this); jiany.addMouseListener(this); addy.addMouseListener(this); addm.addMouseListener(this); today.addMouseListener(this); ymd = years + "年" + months + "月" + day + "日"; add(jiany); add(jianmon); add(addy); add(addm); addMouseListener(this); // setVisible(true); } public static synchronized void rigester(final JComponent date, final JFrame jfs) { final JFrame jf = new JFrame(); jf.setSize(380, 180); MyDate my = new MyDate(jf, date); jf.add(my); jf.setResizable(false); jf.setUndecorated(true); date.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent arg0) { int y = (int) date.getSize().getHeight(); jf.setLocation((int) jfs.getLocation().getX(), (int) jfs .getLocation().getY() + y + 30); jf.setVisible(true); } public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent arg0) { } public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) { jf.setVisible(false); } }); } @Override public void paint(Graphics g) { super.paint(g); g.drawString(ymd, 120, 20); for (int i = 0; i < weeks.length; i++) { g.setColor(Color.RED); g.drawString(weeks[i], 37 + i * 50, 40); g.drawRect(30 + i * 50, 27, 45, 15); } for (int i = 0; i < date.length; i++) { for (int j = 0; j < date[0].length; j++) { if (date[i][j] != 0) { if (date[i][j] == day) { g.setColor(Color.green); } else if (i == 0 && date[0][j] > 7) { g.setColor(Color.YELLOW); } else if (i >= 4 && date[i][j] <= 14) { g.setColor(Color.MAGENTA); } else { g.setColor(new Color(140, 140, 140)); } g.drawString(date[i][j] + "", 50 + j * 50, 60 + i * 20); } g.setColor(new Color(140, 140, 140)); g.drawRect(30 + j * 50, 47 + i * 20, 45, 15); } } }; /** * 获得选择的日历 * * @return */ public String getSelected(int years, int months, int day) { return years + "-" + months + "-" + day; } public void mouseClicked(MouseEvent key) { if (key.getSource() == today) { years = Calendar.getInstance().get(Calendar.YEAR);// months = Calendar.getInstance().get(Calendar.MONTH) + 1;// date = Mycalander.getDateAry(years, months); day = Calendar.getInstance().get(Calendar.DATE);// repaint(); return; } if (key.getSource() == jianmon) { months -= months == 1 ? 0 : 1; } else if (key.getSource() == addy) { years += 1; } else if (key.getSource() == addm) { months += months == 12 ? 0 : 1; } else if (key.getSource() == jiany) { years -= years == 0 ? 0 : 1; } int x = (int) key.getPoint().getX(); int y = (int) key.getPoint().getY(); int column = (x - 40) % 50 >= 39 ? (x - 40) / 50 + 1 : (x - 40) / 50; int row = (y - 50) / 20; if (row >= 0 && column < 7 && row <= 6 && date[row][column] != 0) { day = date[row][column]; jf.setVisible(false); JTextField jf = (JTextField) com; int yr, mn; if (row == 0 && date[0][column] > 7) { yr = months == 1 ? years - 1 : years; mn = months == 1 ? 12 : months - 1; } else if (row >= 4 && date[row][column] <= 14) { mn = months == 12 ? 1 : months + 1; yr = months == 12 ? years + 1 : years; } else { yr = years; mn = months; } jf.setText(getSelected(yr, mn, day)); } ymd = years + "年" + months + "月" + day + "日"; date = Mycalander.getDateAry(years, months); repaint(); } public void mouseEntered(MouseEvent key) { // TODO Auto-generated method stub Object source = key.getSource(); if (source == addy || source == jiany || source == addm || source == jianmon) { JLabel jb = (JLabel) source; jb.setBackground(Color.red); add(jb); } } public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) { } public static void main(String[] args) { JFrame j = new JFrame(); System.out.println(111); j.setSize(100, 20); j.setLocation(200, 300); // j.setResizable(false); j.setLayout(null); JTextField jt = new JTextField(); jt.setBounds(20, 20, 100, 20); JTextField jt1 = new JTextField(); jt1.setBounds(20, 40, 100, 20); j.setResizable(false); j.setContentPane(jt); rigester(jt, j); j.pack(); j.setVisible(true); } }
最近下载更多
wadadd LV7
2022年9月5日
Demo1111 LV30
2021年12月12日
skyer5217 LV2
2020年12月23日
taqinchuan LV1
2020年8月2日
admin_z LV22
2020年5月29日
xuexue123 LV1
2020年5月28日
116699 LV1
2020年3月30日
小强111111 LV20
2020年2月15日
yongzheng132 LV17
2019年6月24日
寸头的春天 LV1
2019年5月11日
最近浏览更多
yeshun
4月26日
暂无贡献等级
woldxy LV12
4月1日
Ji123455 LV8
2023年9月21日
SILKYYY
2023年5月25日
暂无贡献等级
xuexizhuanyong23 LV16
2023年4月29日
qq1061521319 LV4
2022年11月14日
香菇肉饼汤 LV8
2022年10月30日
3233497907 LV1
2022年10月21日
alonely23 LV1
2022年10月20日
wadadd LV7
2022年9月5日