文字列の外にある矩形の枠線を持つグラフィックスを使用して文字列を描画したいと思います。矩形の枠線を持つdrawString
これは、私はすでに何をすべきかです:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
FontMetrics fontMetrics = g2d.getFontMetrics();
String str = "aString Test";
int width = fontMetrics.stringWidth(str);
int height = fontMetrics.getHeight();
int x = 100;
int y = 100;
// Draw String
g2d.drawString(str, x, y);
// Draw Rectangle Border based on the string length & width
g2d.drawRect(x - 2, y - height + 2, width + 4, height);
}
私の問題は、私は外に長方形の枠線で改行(「\ n」)をして、文字列を描きたい、次のとおりです。
これは、新しい行のコード:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
FontMetrics fontMetrics = g2d.getFontMetrics();
String str = "aString\nTest";
int width = fontMetrics.stringWidth(str);
int height = fontMetrics.getHeight();
int x = 100;
int y = 100;
// Drawing string per line
for (String line : str.split("\n")) {
g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
}
}
誰でもこの問題を解決できますか?私が正しく理解していれば、私はあなたの問題は、長方形の高さであり、あなたの助け&提案...
最終的なコード
int numberOfLines = 0;
for (String line : str.split("\n")) {
if(numberOfLines == 0)
g2d.drawString(line, x, y);
else
g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
numberOfLines++;
}
g2d.drawRect(x - 2, y - height * numberOfLines + 2, width + 4, height * numberOfLines);
私は高さのいくつかの変更を加えました: g2d.drawRect(x - 2、y - 高さ* numberOfLines + 2、幅+4、高さ* numberOfLines); – Crazenezz
甘い、うれしかった –