是否可以在方法paintComponent中獲得Graphics2D實體繪制的寬度和高度?
例如,在下面的 MessageUnit 中,
class MessageUnit extends JPanel {
String msg;
JPanel msgBox;
public MessageUnit(String msg, JPanel msgBox) {
this.msg = msg;
this.msgBox = msgBox;
setPreferredSize(new Dimension(msgBox.getWidth(), 10));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
final Graphics2D g2D = (Graphics2D) g;
g2D.drawString(msg, 10, 30);
}
}
能否獲取 G2D 繪制字串所使用的高度和寬度,以便我可以重置大小以實作類似于回應式布局的效果?
例如,如果繪制msg占用 100 像素,那么我可以將 的寬度設定MessageUnit為 120 像素,這樣看起來訊息只是居中。
而下一條訊息可能會占據60px,那么我將寬度設定MessageUnit為80px,看起來訊息又居中了。
是否可以?謝謝
uj5u.com熱心網友回復:
如果您只需要繪制一個字串,您可以根據字體和字串本身獲得它的未來大小。
public static void setSizeFromFont(Component component, Font font, String text){
component.setSize((int)(Math.ceil(component.getFontMetrics(font).stringWidth(text))), font.getSize());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/371765.html
上一篇:使用Yield壓平字典
