CalIconpublic class CalIcon extends JComponent Display one of those standard Calendar Page icons with
Weekday, Day and Month.
TODO:
1) Test with/without showTime.
2) MouseListener to call a callback on single click. |
Fields Summary |
---|
protected final int | SIZEThe size shalle be 64x64. | protected final Dimension | d | protected final int | RBWThe size of the inner white box | protected final int | RBH | protected final int | RBXThe x location of the inner box | protected final int | RBYThe y location of the inner box | protected Calendar | myCalOur Calendar | protected boolean | showTimeTrue if user wants the time shown | protected Clock | clockThe Clock to show the time, if showTime | protected Font | dayNumbFontFont for displaying the time | protected FontMetrics | dayNumbFMFontMetrics for displaying the time | protected Font | dayNameFontFont for displaying the time | protected FontMetrics | dayNameFMFontMetrics for displaying the time | protected Font | monNameFontFont for displaying the time | protected FontMetrics | monNameFMFontMetrics for displaying the time | public String[] | daysDays of the week | public String[] | mons |
Constructors Summary |
---|
public CalIcon()Construct the object with default arguments
super();
setLayout(null); // we don't need another layout, ...
myCal = Calendar.getInstance();
if (showTime) {
// System.err.println("Constructing and adding Clock");
clock = new Clock();
add(clock);
clock.setBounds(0, 2, SIZE, 10);
// clock.setBackground(Color.black);
// clock.setForeground(Color.green);
}
dayNumbFont = new Font("Serif", Font.BOLD, 20);
dayNumbFM = getFontMetrics(dayNumbFont);
dayNameFont = new Font("SansSerif", Font.PLAIN, 10);
dayNameFM = getFontMetrics(dayNameFont);
monNameFont = new Font("SansSerif", Font.ITALIC, 10);
monNameFM = getFontMetrics(monNameFont);
RBX = 12; // raised box x offset
RBY = d.height - (RBH+(showTime?12:0)/2);
// System.err.println("RBX, RBY = " + RBX + "," + RBY);
| public CalIcon(Calendar c)Construct the object with a Calendar object
this();
myCal = c;
|
Methods Summary |
---|
public java.awt.Dimension | getMinimumSize()
return d;
| public java.awt.Dimension | getPreferredSize()
return d;
| public void | paint(java.awt.Graphics g)Paint: draw the calendar page.
String s;
int w;
// Allow clock to get painted (voodoo magic)
if (showTime)
super.paint(g);
// Outline it.
g.setColor(Color.black);
g.draw3DRect(0, 0, d.width-2, d.height-2, true);
// Show the date: First, a white page with a drop shadow.
g.setColor(Color.gray);
g.fillRect(RBX+3, RBY+3, RBW, RBH);
g.setColor(Color.white);
g.fillRect(RBX, RBY, RBW, RBH);
g.setColor(getForeground());
s = days[myCal.get(Calendar.DAY_OF_WEEK)-1];
g.setFont(dayNameFont);
w = dayNameFM.stringWidth(s);
g.drawString(s, RBX+((RBW-w)/2), RBY+10);
s = Integer.toString(myCal.get(Calendar.DAY_OF_MONTH));
g.setFont(dayNumbFont);
w = dayNumbFM.stringWidth(s);
g.drawString(s, RBX+((RBW-w)/2), RBY+25);
s = mons[myCal.get(Calendar.MONTH)];
g.setFont(monNameFont);
w = monNameFM.stringWidth(s);
g.drawString(s, RBX+((RBW-w)/2), RBY+35);
|
|