java去掉结尾的空格_如何从Java中显示的字符串末尾删除空格?
您可以使用TextLayout来获得更好的宽度计算.
在下面的示例中,您可以看到使用TextLayout和FontMetrics之间的不同:
import javax.swing.*;
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
public class DrawTest extends JPanel
{
String text;
public DrawTest(String text)
{
this.text = text;
// setFont( new Font("Arial",Font.PLAIN,24) );
setFont( new Font("Monospaced",24) );
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setFont( getFont() );
g2d.setPaint(Color.RED);
// Draw text using FontMetrics
FontMetrics fm = g2d.getFontMetrics();
Rectangle2D rect = fm.getStringBounds(text,g2d);
rect.setRect(rect.getX() + 100,rect.getY() + 50,rect.getWidth(),rect.getHeight());
g2d.draw(rect);
// Draw text using TextLayout
g2d.setPaint(Color.BLACK);
Point2D loc = new Point2D.Float(100,50);
FontRenderContext frc = g2d.getFontRenderContext();
TextLayout layout = new TextLayout(text,getFont(),frc);
layout.draw(g2d,(float)loc.getX(),(float)loc.getY());
Rectangle2D bounds = layout.getBounds();
bounds.setRect(bounds.getX()+loc.getX(),bounds.getY()+loc.getY(),bounds.getWidth(),bounds.getHeight());
g2d.draw(bounds);
}
private static void createAndShowUI()
{
DrawTest text = new DrawTest("This is some ugly test i");
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
frame.add( text );
frame.setSize(400,200);
frame.setLocationByPlatform( true );
frame.setVisible( true );
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
你也不应该:
>设置首选大小.相反,您应该重写getPreferredSize()方法以返回大小
>在绘画方法中设置字体.所有组件都支持setFont()方法.所以只需在构造函数中设置Font.