第14回 課題解答

1 : ウインドウ表示

import java.awt.*;
import javax.swing.*;
 
public class Main {
    // カスタムJPanelクラス
    private static class MyPanel extends JPanel {
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
        }
    }
 
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Kadai1");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(400, 300));
        frame.pack();
        frame.setVisible(true);
        JPanel panel = new MyPanel();
        frame.add(panel);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
実行結果

2 : テキスト表示とフォント設定

import java.awt.*;
import javax.swing.*;
 
public class Main {
    // カスタムJPanelクラス
    private static class MyPanel extends JPanel {
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            // テキスト表示
            g.drawString("Hello, World!", 100, 100);
            // フォントを32ptのゴシックにする
            Font font = new Font("ゴシック", Font.PLAIN, 32);
            g.setFont(font);
            // 文字列を描画する
            g.drawString("Hello, World!", 100, 150);
        }
    }
 
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Kadai2");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(400, 300));
        frame.pack();
        frame.setVisible(true);
        JPanel panel = new MyPanel();
        frame.add(panel);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
実行結果

3 : 線の描画と色の設定

import java.awt.*;
import javax.swing.*;
 
public class Main {
    // カスタムJPanelクラス
    private static class MyPanel extends JPanel {
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            // 線の描画
            g.drawLine(10, 10, 300, 200);
            // 色を赤にする
            g.setColor(Color.RED);
            // 線の描画
            g.drawLine(10, 200, 300, 10);
            // 線の描画
            g.drawLine(10, 10, 300, 10);
            // 色を#93c47dにする
            g.setColor(new Color(0x93c47d));
            // 線の描画
            g.drawLine(10, 200, 300, 200);
        }
    }
 
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Kadai3");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(400, 300));
        frame.pack();
        frame.setVisible(true);
        JPanel panel = new MyPanel();
        frame.add(panel);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
実行結果

4 : 四角形、楕円の描画と塗りつぶし

import java.awt.*;
import javax.swing.*;
 
public class Main {
    // カスタムJPanelクラス
    private static class MyPanel extends JPanel {
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            // 四角形の描画
            g.drawRect(100, 50, 200, 100);
            // 赤い四角形の描画
            g.setColor(Color.RED);
            g.fillRect(150, 100, 200, 100);
            // 青い枠だけの楕円の描画
            g.setColor(Color.BLUE);
            g.drawOval(100, 150, 200, 100);
            // 緑の楕円の描画
            g.setColor(Color.GREEN);
            g.fillOval(150, 200, 200, 100);
        }
    }
 
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Kadai4");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(400, 300));
        frame.pack();
        frame.setVisible(true);
        JPanel panel = new MyPanel();
        frame.add(panel);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
実行結果

5 : 多角形の描画

import java.awt.*;
import javax.swing.*;
 
public class Main {
    // カスタムJPanelクラス
    private static class MyPanel extends JPanel {
        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            // 五角形の描画
            int[] xPoints = {50, 100, 150, 100, 50};
            int[] yPoints = {50, 25, 50, 75, 150};
            g.drawPolygon(xPoints, yPoints, 5);
            // 正五角形の描画
            // パネルの中心の座標
            int centerX = getWidth() / 2;
            int centerY = getHeight() / 2;
            for (int i = 0; i < 5; i++){
                xPoints[i] = (int) (centerX + 100 * Math.cos(2 * Math.PI * i / 5));
                yPoints[i] = (int) (centerY + 100 * Math.sin(2 * Math.PI * i / 5));
            }
            g.drawPolygon(xPoints, yPoints, 5);
        }
    }
 
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Kadai5");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(400, 300));
        frame.pack();
        frame.setVisible(true);
        JPanel panel = new MyPanel();
        frame.add(panel);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
実行結果