サンプル
import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.Rectangle2D; import javax.swing.Box; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.LineBorder; public class Demo extends JFrame { private static final long serialVersionUID = 1L; public static void main(String[] args) { Demo frame = new Demo(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Box box = Box.createVerticalBox(); JLabel jLabel = new JLabel("テスト"); jLabel.setBorder(new LineBorder(Color.BLACK, 2)); jLabel.setPreferredSize(new Dimension(50, 100)); box.add(jLabel); box.add(Box.createVerticalGlue()); frame.add(box); frame.setBounds(100, 200, 400, 400); frame.setVisible(true); } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // Case1 BasicStroke roundStroke = new BasicStroke(6.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); g2.setStroke(roundStroke); g2.draw(new Rectangle2D.Double(100, 100, 150, 150)); // Case2 g2.drawRoundRect(50, 50, 150, 100, 30, 30); // Case3 g2.fillRoundRect(260, 200, 100, 150, 30, 30); } }
補足1 : アンチエイリアス
* 丸枠部分がギザギザに見えてしまるので、滑らかな感じにする必要がある => この処理を「アンチエイリアス処理」という ~~~~ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + RenderingHints.KEY_ANTIALIASING : アンチエイリアス + RenderingHints.VALUE_ANTIALIAS_ON : アンチエイリアス有効 ~~~~https://www.javadrive.jp/java2d/graphics2d/index3.html
http://www.geocities.jp/okamotomkk/Java/07_2D/01BaseDraw/04Rendering/RenderingHints.htm
補足2 : 線の形状 (BasicStrokeクラス)
* 以下のサイトが詳しい。http://www.geocities.jp/okamotomkk/Java/07_2D/01BaseDraw/03LineFigureStroke/LineFigureStroke.htm
線の端(ハジ)の形状
https://www.javadrive.jp/java2d/stroke/index3.html`# | `値 | 説明 |
1 | CAP_BUTT | 装飾なし |
2 | CAP_ROUND | 両端を半円 |
3 | CAP_SQUARE | 両端を正方形 |
線の結合方式
https://www.javadrive.jp/java2d/stroke/index4.html`# | `値 | 説明 |
1 | JOIN_BEVEL | 直線に接合 |
2 | JOIN_MITER | 外側の端が重なるまで延長して接合 |
3 | JOIN_ROUND | 角を丸く切り落として接合 |
参考文献
http://java.keicode.com/lib/graphics-drawing.phphttp://www1.bbiq.jp/takeharu/Applet9.html
http://www.geocities.jp/okamotomkk/Java/07_2D/01BaseDraw/03LineFigureStroke/LineFigureStroke.htm