私の paintComponent には、単一の四角形を描画する drawRect があります。ただ、四角形の輪郭を太くしたいのですがやり方がわかりません。そこで、既存の長方形の中に別の長方形を作ることを考えました。別の drawRect を配置しようとしましたが、長方形が中央にありません。
助けてくれてありがとう!
私の paintComponent には、単一の四角形を描画する drawRect があります。ただ、四角形の輪郭を太くしたいのですがやり方がわかりません。そこで、既存の長方形の中に別の長方形を作ることを考えました。別の drawRect を配置しようとしましたが、長方形が中央にありません。
助けてくれてありがとう!
g2d.setStroke(new BasicStroke(6));
paintComponent(Graphics)
Swingコンポーネントのメソッドに渡される引数は、実際にはGraphics2D
インスタンスである必要があります。1つにキャストできます。
3つのストロークが階層化されているこの例を参照してください。
import javax.swing.*;
import java.awt.*;
class StrokeIt {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
StrokePanel sp = new StrokePanel();
sp.setPreferredSize(new Dimension(400,100));
sp.setBackground(Color.BLUE);
JOptionPane.showMessageDialog(null, sp);
}
});
}
}
class StrokePanel extends JPanel {
int pad = 12;
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.RED);
g2d.setStroke(new BasicStroke(10));
g2d.drawRect( 0+pad, 0+pad,
getWidth()-(2*pad), getHeight()-(2*pad) );
g2d.setColor(Color.YELLOW);
g2d.setStroke(new BasicStroke(6));
g2d.drawRect( 0+pad, 0+pad,
getWidth()-(2*pad), getHeight()-(2*pad) );
g2d.setColor(Color.ORANGE);
g2d.setStroke(new BasicStroke(2));
g2d.drawRect( 0+pad, 0+pad,
getWidth()-(2*pad), getHeight()-(2*pad) );
}
}