Bibi's DevLog ๐Ÿค“๐ŸŽ

[Java AWT] GUIํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์› ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ Pie chart ๋ณธ๋ฌธ

๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ/Java ์ž๋ฐ”

[Java AWT] GUIํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์› ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ Pie chart

๋น„๋น„ bibi 2021. 2. 5. 18:15

[Java - AWT] ์› ๊ทธ๋ž˜ํ”„ Pie Chart ๊ทธ๋ฆฌ๊ธฐ

์› ๊ทธ๋ž˜ํ”„, ์› ๊ทธ๋ž˜ํ”„ ๋งŒ๋“ค๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์› ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ ค๊ณ  ๊ตฌ๊ธ€๋ง์„ ์—ด์‹ฌํžˆ ํ•ด๋„ ์ž˜ ์•ˆ ๋‚˜์™€์„œ,
๋‚ด ๋Šฅ๋ ฅ์ด ๋˜๋Š” ๋งŒํผ(?) ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด์•˜๋‹ค.

*Java AWT ๊ธฐ์ดˆ๋Š” ์ž๋ฐ”์˜์ •์„2ํŒ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์› ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ

  • ๊ฐ ํ•ญ๋ชฉ์ด ์ฐจ์ง€ํ•˜๋Š” ๋ฐฑ๋ถ„์œจ(%)์„ ๊ตฌํ•œ๋‹ค.
  • 100%๋Š” ์› ๊ทธ๋ž˜ํ”„์—์„œ 360๋„ ์ด๋ฏ€๋กœ, 1%๋‹น 3.6๋„ ๋กœ ๋ถ€์ฑ„๊ผด์˜ ์ค‘์‹ฌ๊ฐ์„ ๊ณ„์‚ฐํ•œ๋‹ค.
  • 0๋„(์ˆ˜ํ‰์„ )์—์„œ g.fillArc()๋ฅผ ์‚ฌ์šฉํ•ด ํ•ญ๋ชฉ๋‹น ๋ถ€์ฑ„๊ผด์„ ํ•˜๋‚˜์”ฉ ๊ทธ๋ฆฐ๋‹ค.

*drawArc(), fillArc() ๋ถ€์ฑ„๊ผด ๊ทธ๋ฆฌ๊ธฐ๋Š” ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช…ํ•ด ๋†“์•˜์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์งœ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

public void paint(Graphics g) { // ์›๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ
    g.setColor(Color.yellow); // 10๋Œ€
        g.fillArc(100, 100, 200, 200, 0, (int) num10Angle);
        g.setColor(Color.blue); // 20๋Œ€
        g.fillArc(100, 100, 200, 200, (int) num10Angle, (int) num20Angle);
        g.setColor(Color.green); // 30๋Œ€
        g.fillArc(100, 100, 200, 200, (int) (num10Angle + num20Angle), (int) num30Angle);
        g.setColor(Color.orange); // 40๋Œ€
        g.fillArc(100, 100, 200, 200, (int) (num10Angle + num20Angle + num30Angle), (int) num40Angle);
}

public double getRatio(int numWhole, int numPart) { // ๋น„์œจ ๊ตฌํ•˜๊ธฐ
        double ratio = ((double) numPart / (double) numWhole) * 100; 
    // ๊ฒฐ๊ณผ double์ด๋ ค๋ฉด ์ธ์ˆ˜๋„ double๋กœ casting
        return ratio;
}

public double getAngle(double ratio) { // ์ค‘์‹ฌ๊ฐ ๊ตฌํ•˜๊ธฐ
        double angle = 3.6 * ratio;
        return angle;
}

๊ฒฐ๊ณผ :

์›๊ทธ๋ž˜ํ”„