Javaでカスタムカレンダーを作成しようとしています。このために私は拡張しjavax.swing.JComponent
ます。
public class GMCalendar extends JComponent { ... }
私のコンストラクターでは、いくつかの基本的なセットアップを行い、イメージをロードします。
calendarDay = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/resources/images/calendar_day.png"));
そして、その中paintComponent
に私のカレンダーを描画する必要がありますが、すべてを描画するわけではなく、非常に奇妙に見えます。
public void paintComponent(Graphics g) {
super.paintComponent(g);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, currentMonth);
int numberOfWeeks = calendar.getActualMaximum(Calendar.WEEK_OF_MONTH);
for (int i = 0; i < 7; i++) {
for (int j = 0; j < numberOfWeeks; j++) {
int x = i * (DAY_SIZE + DAY_SPACE);
int y = j * (DAY_SIZE + DAY_SPACE);
g.drawImage(calendarDay, x, y, null);
}
}
}
結果は、何もないか、次のようになります。
コンポーネントのサイズが1x1より大きくなる前paintComponent
に呼び出されるようです。
これは私の中にありますmain()
:
GMContainerFrame cf = new GMContainerFrame();
cf.setMinimumSize(new Dimension(800,600));
cf.setVisible(true);
これはGMContainerFrame
(!を使用しないLayoutManager
)のコンストラクターからのものです:
calendarFrame = new GMMiniFrame("Kalender", new GMCalendar(), 230);
GMMiniFrame
拡張しJSplitPane
ます。