可能重复:
如何在java中调整文本大小
是否可以水平拉伸java中的文本。我知道它应该在那里,但我无法弄清楚。字体大小影响文本的高度和宽度。我尝试使用 FontMetrics,但它只给了我文本的宽度。但我只需要更改文本宽度,使其看起来好像被拉伸了。
如果有人知道这样做,请告诉我。提前致谢。
可能重复:
如何在java中调整文本大小
是否可以水平拉伸java中的文本。我知道它应该在那里,但我无法弄清楚。字体大小影响文本的高度和宽度。我尝试使用 FontMetrics,但它只给了我文本的宽度。但我只需要更改文本宽度,使其看起来好像被拉伸了。
如果有人知道这样做,请告诉我。提前致谢。
可能还有其他方法可以实现相同的结果,例如将文本转换为形状并使用 a AffineTransformation
,但这是手头的...
public class StretchText {
public static void main(String[] args) {
new StretchText();
}
public StretchText() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private BufferedImage imgTet;
public TestPane() {
Font font = UIManager.getFont("Label.font");
FontMetrics fm = getFontMetrics(font);
String text = "This is a test";
int width = fm.stringWidth(text);
int height = fm.getHeight();
imgTet = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = imgTet.createGraphics();
g2d.setColor(Color.BLACK);
g2d.drawString(text, 0, fm.getAscent());
g2d.dispose();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(imgTet, 0, 0, getWidth(), imgTet.getHeight(), this);
g2d.dispose();
}
}
}