解答例 - 実習課題1 - 12.描画
(実習課題1)
以下のプログラムを作成しなさい。
- ウィンドウに含まれるコンポーネントはパネルのみ。
- パネルにはサイズ一杯の6角形を描く事。
解答例
/** * HexagonFrame.java * TECHSCORE Javaユーザインタフェース12章 実習課題1 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.ui.chapter12.exercise1; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Polygon; import javax.swing.JFrame; import javax.swing.JPanel; public class HexagonFrame extends JFrame { public HexagonFrame() { super("HexagonFrame"); setDefaultCloseOperation(EXIT_ON_CLOSE); HexagonPanel panel = new HexagonPanel(); panel.setPreferredSize(new Dimension(300, 300)); getContentPane().add(panel, BorderLayout.CENTER); pack(); } public static void main(String args[]) { new HexagonFrame().setVisible(true); } private class HexagonPanel extends JPanel { public void paint(Graphics g) { Dimension dim = getSize(); Polygon hex = new Polygon(); // 正六角形の大きさをpanelいっぱいに決定 double radius = 150; // 正六角形の座標 for (int i = 0; i < 6; i++) { hex.addPoint( (int) (Math.sin(Math.PI / 3 * i) * radius + radius), (int) (Math.cos(Math.PI / 3 * i) * radius + radius)); } // 正六角形を描画 g.setColor(Color.BLUE); g.fillPolygon(hex); } } }