我想使用图形绘制字符串,图形的矩形边框在字符串之外。
我已经这么做了:
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);发布于 2012-04-10 02:53:55
如果我理解正确的话,你的问题就是矩形的高度。
试着记录你有多少行(如:
int numberOfLines=0;
for (String line : str.split("\n")) {
g2d.drawString(line, x , y + (numberOfLines * height));
numberOfLines++;
}
g2d.drawRect(x - 2, y - height + 2, width + 4, height * numberOfLines);这也改变了它如何计算出绘制字符串的y值。
像这样的东西有用吗?
发布于 2012-04-10 03:08:07
您还可以创建一个常规的JLabel对象,然后用html设置其文本,并包括
标签。例如,myLabel.setText("<html>aString<br>Test</html>");,然后向JLabel中添加一行边框。
https://stackoverflow.com/questions/10082512
复制相似问题