Hi,
The calculateLowestVisibleThick method in DateAxis Class round up Dates, that's why the start tick mark and end tick mark are not displayed. I had the same problem, by extending class HorizontalDateAxis and overriding method refreshTicks u can solve it... Here it is :
public void refreshTicks(Graphics2D g2,
Rectangle2D plotArea, Rectangle2D dataArea,
int location) {
getTicks().clear();
Font tickLabelFont = getTickLabelFont();
g2.setFont(tickLabelFont);
if (isAutoTickUnitSelection()) {
selectAutoTickUnit(g2, plotArea, dataArea);
}
Rectangle2D labelBounds = null;
DateTickUnit tickUnit = getTickUnit();
// Date tickDate = calculateLowestVisibleTickValue(tickUnit); // Old
Date tickDate = getMinimumDate(); // New
Date upperDate = getMaximumDate();
// while (tickDate.before(upperDate)) { // Old
boolean loop = ( tickDate.compareTo(upperDate) <= 0 ); // New
boolean upper = false; // New
while ( loop ) { // New
// work out the value, label and position
double xx = translateDateToJava2D(tickDate, dataArea);
String tickLabel;
DateFormat formatter = getDateFormatOverride();
if (formatter != null) {
tickLabel = formatter.format(tickDate);
}
else {
tickLabel = tickUnit.dateToString(tickDate);
}
FontRenderContext frc = g2.getFontRenderContext();
Rectangle2D tickLabelBounds = tickLabelFont.getStringBounds(tickLabel, frc);
LineMetrics metrics = tickLabelFont.getLineMetrics(tickLabel, frc);
float x = 0.0f;
float y = 0.0f;
Insets tickLabelInsets = getTickLabelInsets();
if (this.verticalTickLabels) {
x = (float) (xx + tickLabelBounds.getHeight() / 2 - metrics.getDescent());
if (location == TOP) {
y = (float) (dataArea.getMinY() - tickLabelInsets.bottom
- tickLabelBounds.getWidth());
}
else {
y = (float) (dataArea.getMaxY() + tickLabelInsets.top
+ tickLabelBounds.getWidth());
}
}
else {
x = (float) (xx - tickLabelBounds.getWidth() / 2);
if (location == TOP) {
y = (float) (dataArea.getMinY() - tickLabelInsets.bottom);
}
else {
y = (float) (dataArea.getMaxY() + tickLabelInsets.top
+ tickLabelBounds.getHeight());
}
}
Tick tick = new Tick(tickDate, tickLabel, x, y);
getTicks().add(tick);
tickDate = tickUnit.addToDate(tickDate);
// New
if( !upper ) {
if( tickDate.compareTo( upperDate ) >= 0 ) {
tickDate = upperDate;
upper = false;
}
}
else {
loop = false;
}
// New
}
}
Then add this call in the code where u create the chart :
plot.setDomainAxis( instance_of_ur_class_which_extends_HorizontalDateAxis );
Hope this works for u. In my case I didn't extend , I modified the code source directly

)
Regards
Morpheus