给你一个Swing hacks里面的例子: import java.awt.*; import java.awt.event.*; import javax.swing.*;public class MoveMouseListener implements MouseListener, MouseMotionListener { JComponent target; Point start_drag; Point start_loc; public MoveMouseListener(JComponent target) { this.target = target; } public static JFrame getFrame(Container target) { if(target instanceof JFrame) { return (JFrame)target; } return getFrame(target.getParent()); } Point getScreenLocation(MouseEvent e) { Point cursor = e.getPoint(); Point target_location = this.target.getLocationOnScreen(); return new Point( (int)(target_location.getX()+cursor.getX()), (int)(target_location.getY()+cursor.getY())); } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) { this.start_drag = this.getScreenLocation(e); this.start_loc = this.getFrame(this.target).getLocation(); } public void mouseReleased(MouseEvent e) {} public void mouseDragged(MouseEvent e) { Point current = this.getScreenLocation(e); Point offset = new Point( (int)current.getX()-(int)start_drag.getX(), (int)current.getY()-(int)start_drag.getY()); JFrame frame = this.getFrame(target); Point new_location = new Point( (int)(this.start_loc.getX()+offset.getX()), (int)(this.start_loc.getY()+offset.getY())); frame.setLocation(new_location); } public void mouseMoved(MouseEvent e) {} }
import javax.swing.*; import java.awt.*; import java.util.*; import java.text.SimpleDateFormat; import java.awt.event.*;public class CalendarHack extends JPanel { protected Image background, highlight, day_img; protected SimpleDateFormat month = new SimpleDateFormat("MMMM"); protected SimpleDateFormat year = new SimpleDateFormat("yyyy"); protected SimpleDateFormat day = new SimpleDateFormat("d"); protected Date date = new Date();
public void setDate(Date date) { this.date = date; } public CalendarHack() { background = new ImageIcon("calendar.png").getImage(); highlight = new ImageIcon("highlight.png").getImage(); day_img = new ImageIcon("day.png").getImage(); this.setPreferredSize(new Dimension(300,280)); }
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class MoveMouseListener implements MouseListener, MouseMotionListener {
JComponent target;
Point start_drag;
Point start_loc; public MoveMouseListener(JComponent target) {
this.target = target;
} public static JFrame getFrame(Container target) {
if(target instanceof JFrame) {
return (JFrame)target;
}
return getFrame(target.getParent());
} Point getScreenLocation(MouseEvent e) {
Point cursor = e.getPoint();
Point target_location = this.target.getLocationOnScreen();
return new Point(
(int)(target_location.getX()+cursor.getX()),
(int)(target_location.getY()+cursor.getY()));
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
this.start_drag = this.getScreenLocation(e);
this.start_loc = this.getFrame(this.target).getLocation();
} public void mouseReleased(MouseEvent e) {} public void mouseDragged(MouseEvent e) {
Point current = this.getScreenLocation(e);
Point offset = new Point(
(int)current.getX()-(int)start_drag.getX(),
(int)current.getY()-(int)start_drag.getY());
JFrame frame = this.getFrame(target);
Point new_location = new Point(
(int)(this.start_loc.getX()+offset.getX()),
(int)(this.start_loc.getY()+offset.getY()));
frame.setLocation(new_location);
}
public void mouseMoved(MouseEvent e) {}
}
import java.awt.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.awt.event.*;public class CalendarHack extends JPanel {
protected Image background, highlight, day_img;
protected SimpleDateFormat month = new SimpleDateFormat("MMMM");
protected SimpleDateFormat year = new SimpleDateFormat("yyyy");
protected SimpleDateFormat day = new SimpleDateFormat("d");
protected Date date = new Date();
public void setDate(Date date) {
this.date = date;
}
public CalendarHack() {
background = new ImageIcon("calendar.png").getImage();
highlight = new ImageIcon("highlight.png").getImage();
day_img = new ImageIcon("day.png").getImage();
this.setPreferredSize(new Dimension(300,280));
}
public void paintComponent(Graphics g) {
((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(background,0,0,null);
g.setColor(Color.black);
g.setFont(new Font("SansSerif",Font.PLAIN,18));
g.drawString(month.format(date),34,36);
g.setColor(Color.white);
g.drawString(year.format(date),235,36);
Calendar today = Calendar.getInstance();
today.setTime(date);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DATE,1);
cal.add(Calendar.DATE,-cal.get(Calendar.DAY_OF_WEEK)+1);
for(int week = 0; week < 6; week++) {
for(int d = 0; d < 7; d++) {
Image img = day_img;
Color col = Color.black;
// only draw if it's actually in this month
if(cal.get(Calendar.MONTH) == today.get(Calendar.MONTH)) {
if(cal.equals(today)) { img = highlight; col = Color.white; }
g.drawImage(img,d*30+46,week*29+81,null);
g.drawString(day.format(cal.getTime()),d*30+46+4,week*29+81+20);
}
cal.add(Calendar.DATE,+1);
}
}
} public static void main(String[] args) {
JFrame frame = new JFrame();
CalendarHack ch = new CalendarHack();
ch.setDate(new Date());
frame.getContentPane().add(ch);
frame.setUndecorated(true);
MoveMouseListener mml = new MoveMouseListener(ch);
ch.addMouseListener(mml);
ch.addMouseMotionListener(mml);
frame.pack();
frame.setVisible(true);
}
}
比较好用,可以在网上下载一个
model2.setCalendarField(Calendar.WEEK_OF_MONTH);
JSpinner spinner2 = new JSpinner(model2);
JSpinner.DateEditor editor2 = new JSpinner.DateEditor(
spinner2, "MMMMM dd, yyyy");
spinner2.setEditor(editor2);DateFormat format =
new SimpleDateFormat("yyyy--MMMM--dd");
DateFormatter df = new DateFormatter(format);
JFormattedTextField ftf1 = new
JFormattedTextField(df);
ftf1.setValue(new Date());